[HTTP] REST API

괭이밥·2022년 12월 28일
0

HTTP

목록 보기
6/6
post-thumbnail

🔎 목차

  1. REST API란?
  2. REST API 구성 요소
  3. REST API 중심 규칙
  4. REST API 주의점


📌 REST API란?

  • REST: Representational State Transfer
  • 웹에 존재하는 자원에 URI부여하여 구분
  • HTTP 메소드 통해 자원에 대한 CRUD 연산 요청
  • 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일

장점

  • HTTP 프로토콜 인프라 그대로 사용
  • 서버와 클라이언트 역할 분리
  • HTTP 통신하는 모든 플랫폼에서 사용 가능

단점

  • 사용할 수 있는 메서드 한정적
  • 구형 브라우저라면 PUT, DELETE같은 HTTP 메서드 지원하지 못함


📌 REST API 구성 요소

1. 자원(Resource)

  • 특정 자원 나타냄
  • HTTP URI로 표현

2. 행위(Verb), Method

  • 자원에 대한 행위 나타냄
  • HTTP 메소드로 표현

3. 표현(Representations)

  • 자원 행위의 추가 내용
  • HTTP 메시지 페이로드로 표현(= HTTP 메시지 바디)
  • GET, DELETE의 행위 경우 작성하지 않음


📌 REST API 중심 규칙

REST의 기본적인 규칙
1. URI 자원 표현하는데 집중
2. 행위에 대한 정의는 HTTP 메소드

1. URI는 정보의 자원 표시

  • 리소스 명은 동사보다 명사 사용
  • URI에 리소스 행동 표현 사용하지 않음
// URI에 동사 표현 -> 지양
GET students/find/100

// 수정
GET students/100

2. 자원의 행위는 HTTP 메소드로 표현

  • 주로 GET, POST, PUT, DELTE로 표현
// 등록, 삭제 URI에 포함 -> X
GET students/insert/100
GET students/delete/100

// 수정
POST students/100
DELETE students/100


📌 URI 설계 시 주의점

1. 슬래시(/): 계층 관계 나타내는데 사용

  • URI 마지막에 슬래시 넣지 않기
  • URI는 리소스의 유일한 식별자로 URI가 다르면 리소스가 달라짐
  • 따라서 URI 경로에 마지막 슬래시 사용하지 않음
// 마지막 슬래시 -> X
GET students/insert/100/

// 수정
GET students/insert/100

2. 하이픈(-): URI 가독성 높이기 위해 사용

  • URI가 길어질 때 가독성을 위해 사용
GET http://restapi.com/school/classroom/3-3

3. 언더바(_): 사용하지 않음

  • 언더바는 보기 어렵거나 문자가 가려지는 문제 발생
  • 언더바 대신 하이픈 사용
// URI에 밑줄 사용 - bad
GET http://restapi.com/school/classroom/3_3

// 수정
GET http://restapi.com/school/classroom/3-3

4. URI는 소문자로 작성

  • URI는 대소문자에 따라 다른 리소스로 인식
// 아래 리소스와 다른 리소스
GET http://restapi.com/School/Classroom/3-3

// 소문자로만 작성한 URI
GET http://restapi.com/school/classroom/3-3

5. 파일 확장자는 URI에 포함시키지 않음

  • URI에 파일 확장자 표시하지 않음
  • Accept 헤더에 파일 확장자 작성 가능
// URI 경로에 확장자 표기 - bad
GET http://restapi.com/school/students/photo.jpg

// 수정
GET http://restapi.com/school/students/photo
HTTP/1.1 HOST:restapi.com Accept:image/jpg


참고자료

https://restfulapi.net/http-methods/

https://poiemaweb.com/js-rest-api

https://meetup.toast.com/posts/92

profile
사람들이 움직이는게

0개의 댓글