Skip to content

Latest commit

 

History

History
138 lines (94 loc) · 4.81 KB

REST API.md

File metadata and controls

138 lines (94 loc) · 4.81 KB

REST API란

문제 정의: Client와 Web Server는 어떻게 소통하는가?


REST (REpresentational State Trasfer)

HTTP 기반의 네트워크 아키텍처 원리 중 하나.

  • HTTP: Web 상에서 Data를 주고받을 수 있는 Protocol
  • 네트워크 아키텍처 원리: Resource(자원)을 정의하고 Resource에 대한 URI를 지정하는 방법 전반을 일컫는다.

API (Application Programming Interface)

프로그램과 또 다른 프로그램을 연결해주는 매개체

예시

  • 내 서비스에 구글 맵을 띄우고 싶을 때, 구글 Map API를 이용해서 구현한다.
  • 앱에 카카오톡 로그인을 넣고 싶을 때, 카카오톡 로그인 API를 사용한다.
  • 사용자 A에 대한 정보가 필요할 때 DB에 직접 접속하지 않고 getInfo같은 API를 통해 정보를 가져온다.

API 작성 방법

작성 방법


REST API

REST를 통해 API를 구현한 것. Web에서 사용한다.

HTTP Packet(데이터 형식)

imageimage

[Request Line] HTTP METHOD

METHOD Description
GET 리소스 조회
POST 리소스 생성
PUT 리소스 수정
DELETE 리소스 삭제
PATCH 리소스 일부 수정

PUT: 자원 전체 교체, 자원 내 모든 필드 필요. (일부만 전달할 시에 나머지 필드는 모두 null 혹은 초기값 처리 되므로 주의)
PATCH: 자원 부분 교체, 자원 내 일부 필드 필요.

GET /members/1  #1번 member의 정보 조회
POST /members/2 # 2번 member의 정보 생성(추가)

[Request Line] 변수 전달 방법

1) Path Variable

GET /users/14579 GET /users/:userNo
GET /users/{userNo}

2) Query String(Params)

GET /users/?age=14&name=%이%

[HEADER]

header: meta-data (data에 대한 설명을 제공하는 data)

[BODY] Data 종류

1) RAW: XML, JSON [XML과 JSON의 차이]
참고: XML에 비한 JSON의 장점 
1) 저장할 data가 줄어든다. (data와 직접적인 연관이 없는 태그들이 사용되지 않기 때문이다.) 
2) JSON은 Object 형태이다. 다루기 용이하다. 
2) Form

RESTful 한 API 설계 방법

REST API 중심 규칙

  1. URI는 정보의 자원을 표현한다. (Resource명은 명사로)

GET /members/delete/1 (잘못됨)

  1. 자원에 대한 행위는 HTTP Method로 표현한다.

DELETE /members/1 (위의 예시를 바르게 표현한 경우)

즉, [행위(V) - 자원(N)] [Method - URI(Resource)]를 구분함으로써 RESTful한 API를 설계할 수 있다.

주의점

  1. 슬래시(/)는 계층 관계를 나타낼 때 사용한다.

GET /houses/apartments/12345 GET /animals/mammals/whales/1

  1. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.

GET /houses/apartments/ (X) GET /houses/apartments (0)

  1. 밑줄(_)이 아닌 하이픈(-)으로 의미를 구분하자.

POST /users/14579/blocked-user

  1. URI 경로는 소문자가 적합하다.

  2. 파일 확장자는 URI에 포함시키지 않는다.

  3. Collection은 복수로 표현하자.

GET sports/soccer/players/13

응답코드

응답코드


참고자료