REST API

GABMIN KIM·2022년 1월 22일
0
post-thumbnail

REST의 정의

Representatinal State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.

조금 더 자세한 개념은 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.


REST의 장점과 단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 존재하지 않는다.
  • 사용할 수 있는 메소드가 4가지 밖에 없다.
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 값이 왠지 더 어렵게 느껴진다.
  • 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.

REST API 규칙

  1. 소문자를 사용한다.
    주소에서 대소문자를 구분하므로, 카멜방식이 아닌 소문자를 사용하여 작성한다.
[good]
http://localhost:3000/users/user-profile
[bad]
http://localhost:3000/users/userProfile
  1. 언더바(_) 대신 하이븐(-)을 사용한다.
    가급적 하이픈의 사용도 최소화하며, 정확한 의미나 표현을 위해 단어의 결합이 불가피한 경우에 사용한다.
[good]
http://localhost:3000/users/user-profile
[bad]
http://localhost:3000/users/user_Profile
  1. 마지막에 슬래시를 포함하지 않는다.
    슬래시는 계층을 구분하는 것으로, 마지막에는 사용하지 않는다.
[good]
http://localhost:3000/users/user
[bad]
http://localhost:3000/users/user/
  1. 행위는 포함하지 않는다.
    행위는 URI대신 Method를 사용하여 전달한다.
[good]
POST(http://localhost:3000/users/user)
[bad]
http://localhost:3000/users/user/add
  1. 파일 확장자는 URI에 포함시키지 않는다.
    바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다. Accept header를 사용해야한다.
[good]
POST(http://localhost:3000/users/user)
HTTP/1.1 Host:localhost:3000 Accept: image/jpg
[bad]
http://localhost:3000/users/user/image.jpg
  1. 가급적 전달하고자하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.
[good]
http://localhost:3000/users/user/duplicate
[bad]
http://localhost:3000/users/user/duplicating

출처:
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://devuna.tistory.com/79 [튜나 개발일기]

profile
목표를 성취하는 개발자가 되겠습니다.

0개의 댓글