hyeonga_code

PreProject_02_REST 본문

Project_HYEONGARL

PreProject_02_REST

hyeonga 2024. 5. 11. 09:59
반응형

 

 

REST Representational State Transfer

하나의 URI가 고유한 리소스를 처리하는 공통 방식입니다.

REST 방식으로 제공되는 API를 REST API(RESTful API)라 하며 OpenAPI에 많이 사용됩니다.

 

@RestController

Spring 3 버전에서 @ResponseBody 어노테이션을 지원하며 REST 방식의 데이터 처리를 지원했습니다.

Spring 4 버전에서 @RestController 어노테이션을 이용하여 REST 방식의 데이터 처리를 지원합니다.

 

@RestController 어노테이션이 적용된 클래스는 @ResponseBody 가 기본적으로 포함되어 있어 메소드의 반환값을 HTTP 응답 본문(Body)에서 사용할 수 있습니다.

JSON이나 XML 형식의 데이터를 반환하여 클라리언트와 서버 간의 통신에 사용됩니다.

 

RESTful API 형식을 사용하지 않는 경우

1. 일관성 및 예측 가능성의 결여

자원 지향 아키텍처를 기반으로 하는 RESTful API는 URI가 특정 자원을 나타내고 HTTP 메소드가 그 자원에 대한 행동을 명확하게 정의합니다.

API 사용자는 각 URL과 HTTP 메소드의 의미를 추측하거나 매번 문서를 참조해야 할 수 있습니다.

 

2. 호환성 문제

많은 개발 도구와 라이브러리가 RESTful 원칙에 기반하여 최적화되어 있습니다.

 

3. 확장성 및 유지 관리

 

HTTP 메소드

서버에 다양한 유형의 요청을 정의합니다.

각 메소드는 다른 목적을 가집니다.

 

1. GET

지정된 리소스의 표현을 요청합니다.

데이터를 검색하는 데 사용되며 데이터를 변경하지 않습니다.

같은 요청을 여러 번 수행해도 결과가 동일합니다.

 

2. POST

서버에 데이터를 전송하여 리소스를 생성합니다.

데이터를 서버로 보내 새로운 리소스를 생성하거나 데이터를 처리하기 위해 사용됩니다.

같은 요청을 여러 번 보내면 동일한 요청이 여러 번 처리될 수 있습니다.

 

3. PUT

지정된 리소스를 업데이트하거나 지정된 URI에 리소스가 존재하지 않는 경우 해당 리소스를 생성합니다.

전체 리소스를 대체하는 데 사용됩니다.

동일한 PUT 요청을 여러 번 수행하더라도 서버의 상태는 같은 상태를 유지합니다.

 

4. DELETE

지정된 리소스를 삭제합니다.

특정 리소르를 제거하는 데 사용됩니다.

같은 DELETE 요청을 여러 번 수행해도 결과는 동일합니다.

 

5. PATCH

리소스의 부분적인 업데이트를 수행합니다.

PUT과 유사하지만 리소스의 일부분만 수정할 때 사용됩니다.

멱등성이 보장되지 않을 수 있습니다.

 

6. HEAD

GET 요청과 동일하지만 응답 본문 없이 HTTP 헤더만 반환합니다.

리소스의 메타데이터(타입, 수정 날짜)를 확인할 때 사용됩니다.

서버 응답을 테스트하거나 검증할 때 유용합니다.

 

7. OPTIONS

대상 리소스에서 사용 가능한 통신 옵션을 설명하는 데 사용됩니다.

서버 또는 특정 리소스가 지원하는 HTTP 메소드를 확인할 때 사용됩니다.

크로스 오리진 리소스 공유에서 중요한 역할을 합니다.

 

 


크로스 오리진 리소스 공유 CORS Cross-Origin Resource Sharing
웹 페이지가 다른 도메인의 리소스에 접근할 수 있게 하는 보안 매커니즘 입니다.
도메인이나 프로토콜, 포트가 다른 서버로부터 자원을 요청할 때 웹 브라우저의 동일 출처 정책을 우회할 수 있는 방법을 제공합니다.

동일 출처 정책 Same-Origin Policy
웹 보안의 핵심으로 스크립트가 다른 출처의 자원과 상호작용하는 것을 제한합니다.
출처는 프로토콜, 호스트(도메인), 포트 세 가지의 조합으로 정의됩니다.

 

 

REST 방식으로 요청하는 URI 

/ [ 작업명 ] / [ 기본키 ] + [ 메소드 ] + [ 데이터 ]

작업명 : 요청하는 작업 종류

기본키 : 요청하는 작업에 해당하는 대상의 기본키

메소드 : 요청하는 기능

데이터 : 기능 수행에 필요한 JSON 데이터

 

 

POST /boards + 데이터 새 글 등록
GET /boards/101 101번 글 조회
PUT /boards/101 + 데이터 101번 글 수정
DELETE /boards/101 101번 글 삭제

 

반응형