REST의 정의
"REpresentational State Transfer"로서 자원(resource)을 이름(표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
자원(resource)의 표현(representation)은
자원(resource) : 해당 소프트웨어가 관리하는 모든 것(문서, 그림, 데이터 등등)
표현(representation) : 자원을 표현하기 위한 이름(회원 정보가 자원이라면 'member'를 자원의 표현으로 정하는 것)
상태(정보) 전달은 데이터가 요청되는 시점에 자원의 상태(정보)를 전달한다.
Json 혹은 XML로 데이터를 주고 받는다.
REST API는??
API(Application Programming Interface) : 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것을 말한다.
그래서 REST API는 REST 기반으로 서비스 API를 구현한 것이다.
REST API 설계 규칙
- 슬래시 구분자( / ) 는 계층 관계를 나타내는데 사용한다.
예: http://sample.com/home/login - URI 마지막 문자로 슬래시( / )를 포함하지 않는다.
예: httpL//sample.com/home/login/ ( X ) - 하이픈( - ) 은 URI 가독성을 높이는데 사용한다.
- 밑줄( _ ) 은 URI에 사용하지 않는다.
- URI 경로에는 소문자
- 파일확장자는 URI에 포함하지 않는다.
그러면 RESTful API는 뭐지???
REST가 위에서 설명한 것과 같다면 RESTful은 REST라는 아키텍쳐를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
'REST API'를 제공하는 웹서비스를 'RESTful'하다고 할 수 있다. 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭한다.
HTTP Method
HTTP Method
|
전송 형태
|
설명
|
---|---|---|
GET |
GET [request-uri]?query_string HTTP/1.1
Host:[Hostname] 혹은 [IP] | 요청받은 URI의 정보를 검색하여 응답 |
POST |
POST [request-uri] HTTP/1.1
Host:[Hostname] 혹은 [IP] Content-Lenght:[Length in Bytes] Content-Type:[Content Type] [데이터] | 요청된 자원을 생성한다. |
PUT |
PUT [request-uri] HTTP/1.1
Host:[Hostname] 혹은 [IP] Content-Lenght:[Length in Bytes] Content-Type:[Content Type] [데이터] | 요청된 자원을 수정(UPDATE)한다. |
DELETE |
DELETE [request-uri] HTTP/1.1
Host:[Hostname] 혹은 [IP] | 요청된 자원을 삭제할 것을 요청 |
PATCH |
PATCH [request-uri] HTTP/1.1
Host:[Hostname] 혹은 [IP] Content-Lenght:[Length in Bytes] Content-Type:[Content Type] [데이터] |
PUT과 유사하게 요청된 자원을 수정(UPDATE)할 때 사용.
PUT의 경우 자원 전체를 갱신하는 의미지만, PATCH는 해당 자원의 일부를 교체하는 의미로 사용 |
Content-Type
해당 개체에 포함되는 미디어 타입 정보를 말하며 응답 내에 있는 Content-Type 헤더는 클라이언트에게 반환된 컨텐츠의 컨텐츠 유형이 실제로 무엇인지를 알려준다.
컨텐츠의 타입(MIME 미디어 타입)과 문자 인코딩 방식(EUC-KR, UTF-8등)을 지정한다.
HTTP code
응답 대역
응답 코드
설명
성공 200 OK
201 Created
PUT 메소드에 의해 원격지 서버에 파일 생성됨
203 서버가 클라이언트 요구 중 일부만 전송
204 No content
요구한 데이터를 변경된 타 URL에 요청함 / Redirect된 경우
클라이언트
요청 에러
400 Bad Request
사용자의 잘못된 요청을 처리할 수 없음
401 인증이 필요한 페이지를 요청한 경우
403 접근 금지
404 Not found
요청한 페이지 없음
405 허용되지 않는 http method 사용함
408 요청 시간 초과
410 영구적으로 사용 금지
412 전체 조건 실패
414 요청URL길이가 긴 경우
서버에러 500 내부 서버 오류
501 웹 서버가 처리할 수 없음
503 서비스 제공 불가
504 Gateway timeout
게이트웨이 시간 초과
505 해당 http 버전 지원되지 않음
응답 대역
|
응답 코드
|
설명
|
---|---|---|
성공 | 200 | OK |
201 | Created PUT 메소드에 의해 원격지 서버에 파일 생성됨 | |
203 | 서버가 클라이언트 요구 중 일부만 전송 | |
204 | No content 요구한 데이터를 변경된 타 URL에 요청함 / Redirect된 경우 | |
클라이언트
요청 에러 | 400 | Bad Request 사용자의 잘못된 요청을 처리할 수 없음 |
401 | 인증이 필요한 페이지를 요청한 경우 | |
403 | 접근 금지 | |
404 | Not found 요청한 페이지 없음 | |
405 | 허용되지 않는 http method 사용함 | |
408 | 요청 시간 초과 | |
410 | 영구적으로 사용 금지 | |
412 | 전체 조건 실패 | |
414 | 요청URL길이가 긴 경우 | |
서버에러 | 500 | 내부 서버 오류 |
501 | 웹 서버가 처리할 수 없음 | |
503 | 서비스 제공 불가 | |
504 | Gateway timeout 게이트웨이 시간 초과 | |
505 | 해당 http 버전 지원되지 않음 |
URL과 URI의 의미
- URL(Uniform Resource Locator) : 통합 자원 지시자
- 예를 들어 http://test.com/work/test.pdf 는 test.com 서버에서 work 폴더 안의 test.pdf를 요청하는 URL을 의미한다.
- URI(Unitform Resource Identifier) : 통합 자원 식별자
- 프로토콜 + : + // + 호스트이름 + 주소 → http://test.com
- 자원에 접근하기 위해 사용되는 절차
- 어떤 자원을 가지고 있는 특정한 컴퓨터
- 컴퓨터 상의 유니크한 자원의 이름(파일명)
- URN(Uniform Resource Name) : 리소스의 위치와 상관없이 리소스의 이름값을 이용하여 접근하는 방식
댓글 없음:
댓글 쓰기