REST란?
REST란 ?(REpresentational State Transfer)
HTTP, HTTPS 를 이용하여 XML, JSON과 같은 데이터를 주고받는 경량화된 웹서비스 라고 한다.
state = Data = Resource 라는 ROA 철학을 따른다. (REST 상태는 하나의 데이터며 하나의 자원이다)
URI, URL 중에서 어떤것을 써야 될까 ?
끝자리 L과 I의 차이인데 L은 Locate I 는 Identifier라 하며 REST는 주소를 봤을 때 어떤 정보가 담겨있는지 알아야된다
예를들면 localhost/cars/kia 라는 주소가 있으면 차들중에서 KIA 메이커인 것들의 데이터를 제공해주는 것이다 그래서 주소를 봤을 때 식별을 할 수 가 있어야한다 그래서 URI가 맞다.
REST Method
REST Method는 여러가지가 있다
GET, POST, DELETE, PUT, HEADER, OPTION... 등등 다양한 메서드들이 있다 (아직.. GET POST PUT DELETE밖에 모르겠다...)
이러한 메서드들의 특징을 살려서 사용해야는데
GET : 조회 POST : 추가 PUT : 수정 DELETE : 삭제
이런 기능들을 최대한 활용해서 사용하는게 좋은 것같다.
Representation
클라이언트 요청을 보내고 서버가 다시 클라이언트에게 응답 할 때 자신이 원하는 리소스 형태를 받고 싶어 한다.
그래서 클라이언트 서버가 Representation을 협상 과정을 Content Negotitation 이라구 한다.
하지만 제한이 걸린 선 안에서 해결 해야한다.
개발자도구 - Network 에서 통신되는 부분에서 Accept 라는 것을 볼 수 있을 것이다. 이부분이 제공하는 서비스들의 방법 들이다. Accept 허락 안에서만 데이터를 받아 갈 수있다
Addressability(주소표현성)
리소스는 식별자라 하는데 URI에 명사를 최대한 활용하고 만약 표현이 안되는 부분은 동사를 사용하는게 좋다 또 집합체는 복수형으로 사용한다. 또 주소형은 최대한 4단계 까지만.. 하는게 클라이언트에서 사용 하려면 5단계 까지넘어가면 이해하기 힘들다.
Statelessness(상태없음)
상태가 없다는 것은 세션과 쿠키를 사용하지 않는다는 것과 같다.
그냥 URI를 통해 State를 서버와 교환하는 형태이다
REST 서버 상태 코드 응답
상태코드 별로 응답을 해줘야는데 다양한 상태 코드가 있다.
200, 201,
304
400, 401, 403, 404, 405,
500, 501, 503
이러한 상태 코드를 응답하는 메세지가 있어야한다 그래야 초급 개발자에게도 어떤 오류인지 파악을 할수 있게 도움을 준다
GraphQL??
REST는 단방향 데이터 통신을 하는 부분이 단점인데 GraphQL을 사용하면 다양한 데이터를 한 주소에 받아서 GraphQL 쿼리를 사용하여 처리를 하는 방법인데 아직은.. 잘 모르지만 빅데이터 시대에 언젠가는 REST보다 GraphQL이 넘는 날이 오지 않을까 싶다..