본문 바로가기

JavaScript/JavaScript 기초

RESTFul API

1. RESTful


REST는 제약을 두지 않고 구체적인 가이드라인이 없다.

RESTful이라는 개념을 통해 가이드라인이 제시다.

여러 개발자들이 비공식적으로 의견을 제시한 것들로 명확한 정의는 없.




2. REST

(Representational State Transfer)


네트워크 상에 서버와 클라이언트가 통신하는 방식


#REST를 정의하기 위한 조건

1) '클라이언트-서버' 구조

2) 무상태성

3) 캐시 처리 가능

4) 계층화

5) Code on demand

6) 인터페이스 일관성




3. URI

(Uniform Resource Identifier)


인터넷의 리소스를 식별하기 위해서 만들어진 것을 의미


1) 규칙

소문자를 사용

하이픈(-, hyphen)을 사용

확장자를 사용금지


#/user, /member, /group 등 직관적으로 알 수 있는 단어들로 구성




4. REST 구성


자원(Resource) - URI

행위(Verb) - HTTP Method (GET, PUT, POST, DELETE등등)

표현(Representations) - 서버가 보내주는 자원의 상태 EX:) xml, json, text


#HTTP Method (POST, GET, PUT, DELETE)


POST - 자원을 만들때

GET - 자원을 가져올때

PUT - 자원을 수정할때

DELETE - 자원을 지울때


게시판에 글을 작성할때 POST

게시판에 글을 읽을때 GET

게시판에 글을 수정할때 PUT

게시판에 글을 지울때 DELETE




5. HTTP 응답 코드

성공 (2XX)

 200(성공)

 요청을 제대로 처리했다는 뜻

 201(작성됨)

 성공적으로 요청되었으며 서버가 새 리소스를 작성

 202(허용됨)

 요청을 접수했지만 아직 처리않됨

 203(신뢰할 수 없는 정보)

 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공

 204(콘텐츠 없음)

 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음

 205(콘텐츠 재설정)

 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음

 (204 응답과 달리 이 응답은 요청자가 문서 보기를 재설정할 것을 요구)

 206(일부 콘텐츠)

 GET 요청의 일부만 성공적으로 처리

 리다이렉션 완료 (3XX)

 300(여러 선택항목)

 서버가 요청에 따라 여러 조치를 선택할 수 있음

 301(영구 이동)

 요청한 페이지를 새 위치로 영구적으로 이동했다.

 302(임시 이동)

 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함

 303(기타 위치 보기)

 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시

 304(수정되지 않음)

 마지막 요청 이후 요청한 페이지는 수정되지 않음

 305(프록시 사용)

 요청자는 프록시를 사용하여 요청한 페이지만 액세스할 수 있음

실패 (4XX)

 400(잘못된 요청)

 요청의 구문을 인식하지 못함

 401(권한 없음)

 요청은 인증이 필요

 EX:) 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다.

 402(결제 필요)

 요청은 결제가 필요

 403(금지됨)

 요청을 거부

 EX:) 사용자가 리소스에 대한 필요 권한을 갖고 있지 않음

 404(찾을 수 없음)

 요청한 페이지(Resource)를 찾을 수 없음

 405(허용되지 않는 방법)

 요청에 지정된 방법을 사용할 수 없음

 EX:) POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우

 서버 오류 (5XX)

 500(내부 서버 오류) 서버에 오류가 발생하여 요청을 수행할 수 없다.
 501(구현되지 않음)

 서버에 요청을 수행할 수 있는 기능이 없음

 EX:) 서버가 요청 메소드를 인식하지 못할 때 이 코드를 표시

 502(불량 게이트웨이)

 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받음

 503(서비스를 사용할 수 없음)

 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용불가

 504(게이트웨이 시간초과)

 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못함

 505(HTTP 버전이 지원되지 않음)

 서버가 요청에 사용된 HTTP 프로토콜 버전지원하지 않음