HTTP 메서드란?
클라이언트와 서버 사이에 이루어지는 Request와 Response 데이터를 전송하는 방식을 말한다.
요청 메서드를 정의하며, 주어진 리소스에 수행하길 원하는 행동을 나타내는 것을 의미한다고 볼 수 있다.
HTTP Method의 종류
- GET : 조회 (서버로부터 데이터를 취득한다.)
- POST : 등록 (서버에 데이터를 추가, 작성한다.)
- PUT : 수정 (서버의 데이터를 갱신한다.)
- DELETE : 삭제 (서버의 데이터를 삭제한다.)
- HEAD : 서버 리소스의 헤더 (get과 동일하지만 서버에서 body를 return 하지 않음)
- CONNECT : 프록시 동작의 터널 접속을 변경
- OPTIONS : 리소스가 지원하고 있는 메소드의 취득
idempotent 란?
여러 번 수행해도 결과가 같음을 의미한다.
호출로 인해 데이터가 변형되지 X
GET 요청은 idempotent 함
POST 요청은 idempotent 하지 않음 -> 항상 같은 결과물이 나오는것을 보장하지 않는다
RESTful API란?
REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 떄문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다.
resource의 representation에 의한 상태 전달
REST 원리를 따르는 시스템을 RESTful이라고 함!!
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API사용을 위한 별도의 인프라를 구축할 필가 없다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- HTTP 이점 가져올 수 있음!(무상태, 캐시처리 등등)
모든 관련된 동작을 URl을 통해 알려주기 떄문에 클라이언트가 API의 변화에 일일이 대응하지 않아도 된다.
URL 설계 원칙
RESTful API의 설계 목표중 중 하나는 사용의 단순성과 성능을 최적화 하는 것
클라이언트가 서버의 작업에 영향을 미치지 않음!!
시스템을 무상태로 만들어, 각 요청이 독립적이고 서로 영향을 주지 않도록 한다.
1. 명확하고 직관적인 구조 사용
사용자에 대한 정보를 다루는 API의 경우 /users 로 시작하는 경로 사용, 특정 사용자에 대한 정보는
/users/{id}와 같이 표현
2. 명사 사용과 복수형 표현
리소스에 대한 대표명으로 명사를 사용해야 한다.
여러 사용자를 나타낼 때는 /users와 같이 복수형을 사용하고, 단일 리소스에는 /users/{id}와 같이 구체적인 식별자를 사용한다.
3. CRUD 기능을 HTTP 메서드에 매핑
URL을 통해 특정 동작을 명시하지 않아도 된다.
GET /users는 사용자 목록 조회
POST /users는 새로운 사용자 생성
4. 경로 변수의 사용 최소화
경로 변수는 필요한 경우에만 사용해야 하며, URL이 복잡해지는 것을 방지해야 한다.
5. 쿼리 매개변수로 필터링, 정렬 및 페이징 지원
리소스 컬렉션에 대한 접근 시 쿼리 매개변수를 사용하여 이를 지원한다.
예를 들어 특정 사용자의 게시물을 최신 순으로 조회하고 싶다면, /users/{id}/posts?sort=date
'spring & java' 카테고리의 다른 글
| 쿠키 & 세션 / JWT (1) | 2024.08.22 |
|---|---|
| JPA 영속성 컨텍스트 / 영속성 전이 (0) | 2024.08.13 |
| 스프링 MVC / 기본 애노테이션 정리 (0) | 2024.07.08 |
| 싱글톤 패턴 기초 (1) | 2024.02.19 |
| [java] Map 사용방법 (0) | 2024.01.25 |