DEV/🟢 DJANGO

[API] REST API

개발을 하게 되. 2021. 9. 12. 23:43

API 

Application Programming Interface 

우선 프론트 전용 번역기라고 생각하자. 

RESTful API

Representational state transfer

웹상에서 사용되는 여러 리소스를 HTTP URL로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식이다. 

즉, 리소스를 어떻게 한다! 조회를 할것인지 등록을 시킬 것인지에 대한 표현을 구조적으로 표현한 것이다. 형식이라고 생각하자.


HTTP method 

1. GET /user 

2. GET /beverages/1          👉 Rest API    👉 Database     

3. GET /users/101


1.  GET 메소드 : user들의 정보를 get 요청 

2. GET 메소드 : beverages/1 음료들 중 1번 

3. GET 메소드 : users/101 101번째 사용자들을 가져와라 

 

어떤 것을 필요로 하는지 알 수 있음 

주소만 봐도 이런 역할을 할 수 있겠구나 생각함

그러나, 표준규약이 없어서 안티패턴(비효율적)으로 되는 경우가 많음

 

기본 배경 지식 

✓ URI

Uniform Resource Identifier

해당 사이트의 특정 자원의 의치를 나타내는 유일한 주소 

- https://finance.naver.com/login

- https://finance.naver.com/news

 

HTTP method

HTTP requset가 의도하는 action을 정의하는 것

- GET or POST

 

Payload

HTTP request에서 server에서 보내는 데이터 (json 형태로 보내지는 body)

 

사이트에 나와있는 URL이랑 위에 있는 URL 주소는 다르다는 것을 알아야한다. 

백엔드 URL은 기능위주로 묶은 주소이다. 

 

RESTful API 설계규칙 

✓ URI 정보를 명확하게 표현할 것. 

- resource는 명사를 사용

- GET /users/1 

 

✓ resource 사이에 연관관계가 있을 경우

- /리소스/고유ID/관계있는 리소스 순으로 적을 것

- GET /users/{user_id}/profile 

 

✓ URI 의 / 구분자를 사용하여  resource 사이의 계층관계를 나타내는데 사용한다

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

- _는 사용금지 , 대문자 사용 금지