될때까지

((RESTful API)) REST, path parameter and query parameter, status code 본문

학습/개념정리

((RESTful API)) REST, path parameter and query parameter, status code

랖니 2022. 8. 6. 15:04
728x90

요청하는 uri만 봐도 어떤 요청을 하는지 이해가 되는 RESTful API

🍋 REST

Representational State Transfer의 약자로 현재 상태를 나타내면서 주고 받는다는 뜻이다. 

 

🍊RESTful API

이러한 REST한 특징을 지키는 API를 말한다. 

- Graphql은 엔드포인트가 하나다. 그 하나로 들어오면 모든 메소드 요청을 다 처리한다.(페이스북 현메타에서 만들었음) 

- REST API는 웹상에서 사용되는 여러 자원들을 HTTP URI로 표현하고 그 자원에 대한 행위를 HTTP Method로 정의하는 방식이다.

  • API 그 자체만으로도 API의 목적이 쉽게 파악된다.
  • 하지만 표준 규약이 없기 때문에 안티 패턴(실제 많이 사용되는 패턴이지만 비효율적이거나 비생산적인 패턴)으로 작성되는 경우가 많다. 

URI(Uniform Resource Identifier)

HTTP Method

  • HTTP request가 의도하는 action을 정의한 것
  • GET, POST, PUT, PATCH, DELETE 등

Payload

  • HTTP request에서 server로 보내는 데이터( POST로 치면 body)

 

 

RESTful API 설계 규칙

1. URI 정보를 명확하게 표현해야한다.

  • resource는 명사를 사용한다.(단수보다는 복수를 사용한다)
    • ex) GET/users/1

2. resource에 대한 행위를 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

  • URI에 HTTP Method가 포함되면 안된다.
    • ex) GET delete/users/1 -> DELETE users/1
  • URI에 동사가 포함되서는 안된다.
    • ex) GET/users/show/1 -> GET/users/1

3. resource 사이에 연관 관계가 있는 경우 아래와 같이 표현한다.

  • ex) GET /users/{user_id}/profile

4. 파일의 경우 payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.

  • ex) GET users/1/profile-photo.jpg(x) 도메인으로 인식할 수도 있다. .com처럼
  • ex) GET users/1/profile-photo (이때 payload의 포맷은 headers에 accept를 사용한다.)

5. URI는 / 구분자를 사용해서 자원의 계층 관계를 나타내는 데 사용한다.

6. URI 마지막 문자로 / 를 포함하지 않는다.

  • ex) GET users/portfolios/ (x)

7. URI가 길어지는 경우 -를 사용하여 가독성을 높인다.

  • 언더바를 사용하면 하이퍼링크 밑줄이 쳐지기 때문에 잘 안보인다.

8. URI 경로에는 대문자 사용을 피하도록 규정하고 있다.

 

Path parameter

  • GET http://10.58.4.1:8000/products
  • POST http://127.0.0.1:8000/products
    • PUT => 전체 데이터 수정이기 때문에 모든 데이터를 보내줘야 한다.
    • PATCH => 일부를 수정하기 때문에 수정할 데이터만 보내줘도 된다.

Query parameter

filtering and ordering
pagination and searching

 

Status Code

 

728x90