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와 웹 페이지를 반환하는 사용자 인터페이스는 모두 서버에 접근하는 엔드포인트이지만, 그 목적과 사용 방식에서 차이가 있다.