로이 필딩이 웹 설계의 우수성에 비해 제대로 사용되지 못하는 모습에 안타까워 하며 웹의 장점을 활용할 '아키텍쳐'로써 REST를 발표
캐셔블 : HTTP 기존 웹 표준을 그대로 사용하기 떄문에 캐싱 기능이 적용 가능하다.
자체 표현 구조 : 동사(메서드) 명사(URI 약속) 가 명확히 눈에 보여 메시지만 보고도 알 수 있다.
클라이언트 // 서버 구조 : REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인정보) 등 직접 관리하는 구조로 각 역할이 확실히 구분, 의존성 줄어든다.
계층형 구조 : 추후 사용해보고 이해해보기. 아직은 어렵다.
"계층형 아키텍쳐 구조 역시 근래에 들어서 주목받기 시작하는 구조인데, 클라이언트 입장에서는 REST API 서버만 호출한다.
그러나 서버는 다중 계층으로 구성될 수 있다. 순수 비즈니스 로직을 수행하는 API 서버와 그 앞단에 사용자 인증 (Authentication), 암호화 (SSL), 로드밸런싱등을 하는 계층을 추가해서 구조상의 유연성을 둘 수 있는데, 이는 근래에 들어서 앞에서 언급한 마이크로 서비스 아키텍쳐의 api gateway나, 간단한 기능의 경우에는 HA Proxy나 Apache와 같은 Reverse Proxy를 이용해서 구현하는 경우가 많다."
출처: https://bcho.tistory.com/953 [조대협의 블로그]
DELETE /members/1
GET : /users/{userid}/likes/devices (관계명이 애매하거나 구체적 표현이 필요할 때)
1xx : 조건부 응답(요청은 받았으며 작업은 계속 한다.)
2xx : 성공(이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.)
3xx : 리다이렉션 완료(클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다)
4xx : 요청 오류(4xx 클래스의 상태 코드는 클라이언트에 오류가 있음을 나타낸다.)
5xx : 서버 오류(서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다)