[API] REST API
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 가 길어지는 경우 - 을 사용하여 가독성을 높인다.
- _는 사용금지 , 대문자 사용 금지