[HTTP] 스프링에서 RESTful API와 사용자 인터페이스 엔드포인트 차이점

김하밍·2024년 5월 25일
0

HTTP

목록 보기
6/6

RESTful API 호출

1. 목적:

  • 주로 데이터를 주고받기 위해 사용
  • 클라이언트 애플리케이션이나 다른 서버 애플리케이션에서 데이터 처리 요청을 보낼 때

2. 형식:

  • JSON, XML 등의 포맷으로 데이터 주고받음
  • HTTP 메서드를 사용하여 CRUD 작업 수행

3. 상호작용 방식:

  • 클라이언트가 서버의 특정 URL에 HTTP 요청을 보내고, 서버는 요청에 대한 데이터를 JSON, XML 등의 형식으로 응답
  • 클라이언트는 이 데이터를 받아 필요한 처리를 수행

4. 예시

  • 사용자 정보 조회: 'GET /api/user/{id}'
  • 사용자 정보 업데이트: 'PUT /api/user/{id}'
  • 사용자 삭제: 'DELETE /api/user/{id}'

5. 사용 예:

  • AJAX 요청을 통해 웹 페이지에서 데이터를 동적으로 업데이트할 때
  • 모바일 애플리케이션이 서버와 데이터를 주고받을 때
  • 다른 서버 애플리케이션이 데이터 통신을 할 때

웹 브라우저를 통한 사용자 인터페이스 접근

1. 목적:

  • 웹 페이지를 렌더링하여 사용자가 시각적으로 정보를 보고, 상호작용할 수 있도록 함
  • 폼 제출, 페이지 이동 등과 같은 사용자 상호작용 처리할 때

2. 형식:

  • HTML, CSS, JavaScript 등의 형식으로 웹 페이지를 구성
  • 서버는 HTML 페이지를 생성하여 클라이언트(브라우저)에 반환

3. 상호작용 방식:

  • 사용자가 브라우저를 통해 특정 URL에 접근하면, 서버는 해당 URL에 대응하는 HTML 페이지를 반환
  • 사용자가 폼을 제출하면, 서버는 이를 처리하고 결과를 새로운 페이지로 반환하거나 현재 페이지를 업데이트함

4. 예시:

  • 로그인 페이지: 'GET /login'
  • 회원가입 페이지: 'GET /signup'

5. 사용 예:

  • 사용자가 웹사이트를 탐색할 때
  • 사용자가 로그인, 회원가입 등의 폼을 작성하고 제출할 때
  • 사용자가 웹 페이지를 통해 정보를 보고, 버튼을 클릭하는 등의 상호작용을 할 때

차이점 요약

1. 데이터 형식:
RESTful API: 주로 JSON, XML
사용자 인터페이스: HTML, CSS, JavaScript

2. 상호작용 주체:
RESTful API: 클라이언트 애플리케이션(웹, 모바일, 서버)과 서버 간 데이터 통신
사용자 인터페이스: 사용자가 웹 브라우저를 통해 직접 서버에 요청하여 HTML 페이지를 렌더링

3. 응답 내용:
RESTful API: 데이터(JSON, XML)
사용자 인터페이스: 웹 페이지(HTML)

4. 용도:
RESTful API: 데이터 처리를 위한 엔드포인트
사용자 인터페이스: 사용자에게 화면을 제공하고 상호작용을 처리하는 웹 페이지


스프링 관점에서의 차이점

1. @RestController vs @Controller

  • @RestController는 @Controller 와 @ResponseBody 의 조합으로, 메서드의 반환값이 자동으로 JSON 또는 XML 형식으로 변환되어 클라이언트에 전달된다.
  • RESTful API를 구성하는 API 컨트롤러에는 클래스 단위에 @RestController를 적용하면 Swagger와 같은 API 문서화 도구에 의해 문서화되어 나타난다. (@Controller만 붙인 api는 나타나지 않는다.)

2. 엔드포인트에 /api 포함 vs 미포함

  • RESTful API 엔드포인트는 보통 URL 경로에 '/api'를 포함하여 명시적으로 RESTful 서비스임을 나타낸다.
    예를 들어, /api/users, /api/products 등과 같이 나타내어 '해당 경로는 클라이언트 애플리케이션이 데이터 교환을 위해 호출하는 URL이구나.' 라고 생각할 수 있도록 돕는 규약이다.

  • 반면에, '/api'를 포함하지 않으면 사용자 인터페이스 관련 경로임을 알 수 있다. 예를 들어, /user/login, /user/signup 등과 같이 사용하며 '해당 경로는 사용자가 웹 브라우저를 통해 직접 접근하는 URL이구나.' 라고 생각할 수 있도록 돕는 규약이다.


결론

스프링에서 RESTful API와 웹 페이지를 반환하는 사용자 인터페이스는 모두 서버에 접근하는 엔드포인트이지만, 그 목적과 사용 방식에서 차이가 있다.

profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글