REST API : REpresentational State Transfer, RESTful API는,
REST 아키텍처 스타일의 제약 조건을 준수하고 RESTful 웹 서비스와 상호 작용할 수 있도록 하는 애플리케이션 프로그래밍 인터페이스(API 또는 웹 API)로 어떤 자원에 대해 CRUD를 진행할 수 있게 HTTP Method(GET, POST, PUT, DELETE)를 사용하여 요청을 보내는 것을 말한다. 이 때 요청을 위한 자원은 특정한 형태로 표현된다.
☝ URI를 통해 정보의 자원을 표현하고(진짜 자원만 표현), 자원의 행위는 HTTP Method로 명시한다.
- 자원(Resource): URI
- 행위(Verb): HTTP Method
- 표현(Representations)
GET/users/3/profile
☝ 누구라도 user 중에서 3번 아이디를 가지고 있는 사람의 프로필을 내놔라. 라는 뜻.
예시
// bad : URI에 delete가 들어가 있어서
GET /members/delete/1
// good
DELETE /members/1
// bad : 이 또한 URI에 굳이 show라는 행위가 들어가 있음
GET /members/show/1
// good
GET /members/1
// bad : 같은 이슈, 여기서는 insert 대신 아래와 같이 POST라는 HTTP 메소드를 사용해줄 수 있다.
GET /members/insert/2
// good
POST /members/2
규칙
- URI는 명사를 사용하고 소문자로 작성한다
- 명사는 복수형을 사용한다
- URI의 마지막에는 /를 포함하지 않기
- URI에는 언더바 대신 하이픈을 사용한다
- URI에는 파일의 확장자를 표시하지 않는다
http://example.com/posts (O)
http://example.com/posts/ (X)
http://example.com/post (X)
http://example.com/get-posts (X)
--> URI는 명사를 사용하고 소문자로 작성되어야 한다.
--> 명사는 복수형을 사용한다.
--> URI의 마지막에는 /를 포함하지 않는다.
http://example.com/post-list (O)
http://example.com/post_list (X)
--> URI에는 언더바가 아닌 하이픈을 사용한다.
http://example.com/post/assets/example (O)
http://example.com/post/assets/example.png (X)
--> URI에는 파일의 확장자를 표시하지 않는다.
Path Variable vs Query Parameter
REST한 개발을 하다 보면, GET method를 이용하여 데이터를 가져올 때 등의 경우에서 Path Variable과 Query Parameter에 대한 의논과 결정이 필요
Path Variable
:경로 자체에 변수(10)를 사용한 방법, 전체 데이터 또는 특정 하나의 데이터를 다룰 때 처럼, 리소스를 식별하기 위해 사용
/users/10
Query Parameter
: 데이터를 정렬하거나 필터링 하는 경우 더 적합
/users?user_id=10
Examples
/users # Fetch a list of users
/users?occupation=programer # Fetch a list of programer user
/users/123 # Fetch a user who has id 123
이번 프로젝트 API RESTful 하게 작성해봐야지
'What I Learnd > TIL' 카테고리의 다른 글
TIL - 상태로 data값 관리해서 불러오기 (useState, useEffect, 비동기작업) (1) | 2023.07.13 |
---|---|
TIL - Redux Ducks Pattern 정리! (0) | 2023.07.09 |
Axios - instance와 interceptor 정의, .env와 api파일로 리팩토링하기 (0) | 2023.07.05 |
TIL - Json Server 설치 & 사용법 (0) | 2023.07.04 |
TIL - Redux-ToolKit 리덕스 툴킷이란? (0) | 2023.07.04 |