외부에서 특정 URI를 통한 정보를 제공하는 방식(OpenAPI)
리소스 URI를 컬렉션/항목/컬렉션보다 더 복잡하게 요구하지 않는 것이 좋습니다.
ex) /orders/100/list
→ REST방식으로 데이터(서비스)제공이 가능한 형태를 restful하다
Client-Server : 요청/ 제공은 표준 인터페이스로 구현,상호독립적인 관계
Stateless : 클라이언트의 (컨텍스트) 정보가 서버에 저장없이 클라이언트로 저장/처리
Cacheable : 서버의 응답은 캐싱될 수 있어야하고, 확장성, 성능개선 고려
Code on Demand : Java(Applet/Script)등을 통해서 클라이언트가 수행가능한 동작 제공
Uniform Interface : 표준 인터페이스를 통해서 클라이언트/서버 각각 개발/ 발전 가능해야함
⇒ 리소스가 URI로 식별 가능해야함.
리소스정보를 생성, 수정, 삭제할때 HTTP상태 메세지를 사용해야함.
메세지는 스스로 설명가능해야함.
서비스의 상태(status)는 하이퍼링크를 통해서 전이되어야함.
⇒ REST API를 완전하게 구현은 어렵다. → WEB API/HTTP API 로 동작을 구현
Spring에서는 REST방식에 대한 지원
3버전: @ResponseBody 어노테이션
4버전: @RestController 어노테이션
REST 방식 개발 원칙
URI가 특정 데이터(값)을 의미해야함
주소를 사용할땐 가능하면 명사(복수형) 사용
URI를 전달할때는 데이터도 같이 전달 가능해야함
HTTP메서드에 따른 호출은 특정의미를 부여한다.
GET : 조회 (select)
POST : 생성 / 추가 (create)
PUT : 수정 (update), PATCH - 부분수정
DELETE : 삭제 (delete)
일반적인 URI 주소