danbibibi
article thumbnail

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
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로