REST
: HTTP URI를 통해 제어할 자원을 명시하고,
HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원을 제어하는 방식의 아케텍처
- 기존의 전송 방식과는 달리 서버는 요청 받은 리소스에 대해 순수한 데이터를 전송
- 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리 가능
💡 REST 구성
자원 (Resource) - URI
행위 (Verb) - HTTP Method
표현 (Representations)
* 잘 표현된 HTTP URI로 리소스를 정의하고 HTTP method로 리소스에 대한 행위를 정의
* 리소스는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있음
기존 Service와 REST Service
기존 Service : 요청 처리 후 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어 반환
REST Service : data 처리만 하거나, 처리 후 반환될 data가 있다면 JSON이나 XML 형식으로 전달
( * View에 대해서는 신경 쓸 필요가 없기 때문에, Open API에서 많이 사용 )
기존 웹 접근 방식과 REST API 방식의 차이점
작업 | 기존 방식 | REST 방식 | Annotation | ||
CREATE (Insert) | POST | /write.do?id=danbi | POST | /blog/danbi | @PostMapping |
READ (Select) | GET | /view.do?id=danbi&no=22 | GET | /blog/danbi/22 | @GetMapping |
UPDATE (Update) | POST | /modify.do?id=danbi | PUT | /blog/danbi | @PutMapping |
DELETE (Delete) | GET | /delete.do?id=danbi&no=22 | DELETE | /blog/danbi/22 | @DeleteMapping |
REST API 설정
JSON 파일로 응답을 주고 받기 위해 pom.xml에 다음과 같이 dependency를 추가해준다!!
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
💡 Jackson
: Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환할 때 사용하는 Java 라이브러리
REST 관련 Annotation
@RestController
: Controller가 REST 방식을 처리하기 위한 것임을 명시
모든 것이 restcontroller인 경우 아니면 REST 방식 위에 @ResponseBody 이용!!
@ResponseBody
: JSP 같은 뷰로 전달되는 것이 아니라 데이터 자체를 전달
@PathVariable
: URL 경로에 있는 값을 파라미터로 추출
@CrossOrigin
: Ajax의 크로스 도메인 문제를 해결
@RequestBody
: JSON 데이터를 원하는 타입으로 바인딩
HTTP 응답 상태 코드
200 : 클라이언트 요청이 정상 수행된 경우 (응답에 대한 메시지가 포함)
201 : 리소스 생성 요청이 정상 처리된 경우
202 : 리소스 생성 요청이 비동기적으로 처리된 경우
204 : 클라이언트 요청 정상 수행 (응답에 대한 메시지 미포함, 보통 삭제요청에 사용)
400 : 클라이언트 요청이 부적절한 경우 (부적절한 이유를 응답 Body에 넣어야 함)
401 : 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청한 경우
403 : 클라이언트가 인증상태와 무관하게 응답하고 싶지 않은 리소스를 요청한 경우 (400 사용 권장)
404 : 클라이언트가 요청한 리소스가 존재하지 않는 경우
405 : 클라이언트가 불가능한 메소드를 사용한 경우
'WEB > back-end' 카테고리의 다른 글
Spring Boot (0) | 2023.04.26 |
---|---|
REST API 실습 (0) | 2023.04.26 |
web.xml, servlet-context.xml, root-context.xml (0) | 2023.04.25 |
Spring-MyBatis 실습 (0) | 2023.04.24 |
MyBatis, MyBatis-Spring 설정 (0) | 2023.04.24 |