🤔 RESTful API란?
📝 정의
RESTful API는 Representational State Transfer의 약자로, 웹 상의 자원을 HTTP 프로토콜을 이용하여 전송하는 것을 의미한다. RESTful API는 일관적인 인터페이스를 제공하며, 서버와 클라이언트 간의 통신을 가능하게 해준다.
❓ 사용하는 이유
RESTful API는 다음과 같은 이유로 많이 사용된다.
- HTTP 프로토콜을 이용하여 간단하게 자원을 전송할 수 있다.
- 서버와 클라이언트 간의 인터페이스를 일관적으로 제공한다.
- 클라이언트와 서버가 독립적으로 개발될 수 있다.
- 캐싱 처리가 용이하여 서버의 부하를 줄일 수 있다.
😎 적용방법
RESTful API를 적용하기 위해서는 다음과 같은 요소들을 고려해야 한다.
✅ HTTP 메소드
RESTful API에서는 HTTP 메소드를 이용하여 서버의 자원을 CRUD(Create, Read, Update, Delete)할 수 있다. HTTP 메소드에는 다음과 같은 종류가 있습니다.
- GET : 조회한다.
- POST : 생성한다.
- PUT : 수정한다.
- DELETE : 삭제한다.
✅ URI 설계
RESTful API에서는 URI(Uniform Resource Identifier)를 이용하여 자원을 구분합니다. URI는 다음과 같은 구성 요소로 이루어져 있다.
http(s)://<host>:<port>/<context-path>/<resource>/<resource-id>
- host : 서버의 호스트 이름 또는 IP 주소
- port : 서버의 포트 번호
- context-path : 애플리케이션의 컨텍스트 경로
- resource : 자원의 이름
- resource-id : 자원의 고유 식별자
✅ HTTP 응답 상태 코드
RESTful API에서는 HTTP 응답 상태 코드를 이용하여 요청에 대한 처리 결과를 전달한다. HTTP 응답 상태 코드에는 다음과 같은 종류가 있다.
- 2xx : 성공적으로 처리
- 4xx : 클라이언트 오류 발생
- 5xx : 서버 오류 발생
✅ HTTP 요청 헤더
RESTful API에서는 HTTP 요청 헤더를 이용하여 요청에 대한 부가적인 정보를 전달한다. HTTP 요청 헤더에는 다음과 같은 종류가 있다.
- Accept : 클라이언트가 원하는 응답 형식을 지정
- Content-Type : 요청 본문의 형식을 지정
- Authorization : 인증 정보를 전달
✅ HTTP 응답 헤더
RESTful API에서는 HTTP 응답 헤더를 이용하여 응답에 대한 부가적인 정보를 전달한다. HTTP 응답 헤더에는 다음과 같은 종류가 있다.
- Content-Type : 응답 본문의 형식을 지정
- Cache-Control : 응답에 대한 캐시 제어 정보를 전달
- Location : 리소스의 위치 정보를 전달
✅ HTTP 요청 본문
RESTful API에서는 HTTP 요청 본문을 이용하여 클라이언트에서 서버로 데이터를 전달할 수 있다. 요청 본문의 형식은 Content-Type 헤더를 이용하여 지정한다.
✅ HTTP 응답 본문
RESTful API에서는 HTTP 응답 본문을 이용하여 서버에서 클라이언트로 데이터를 전달할 수 있다. 응답 본문의 형식은 Content-Type 헤더를 이용하여 지정한다.
✅ RESTful API 설계 원칙
RESTful API를 설계할 때는 다음과 같은 원칙을 따르는 것이 좋다고 한다.
- URI는 동사보다는 명사를 사용
- URI에는 CRUD 기능을 나타내는 동사 포함 X
- 자원에 대한 행위는 HTTP 메소드를 이용하여 표현
- URI는 계층 구조
- 하나의 URI는 하나의 리소스
'코딩공부 > 학습요약' 카테고리의 다른 글
Next.js13 프로젝트에서 yarn start(or npm run start) 스크립트를 실행했을 때 실행되는 코드 분석 (0) | 2023.06.28 |
---|---|
Prisma 사용/공부 요약 (0) | 2023.04.27 |
[FrontEnd 지식] 브라우저 렌더링 원리와 순서(+성능 최적화 고려사항) (0) | 2023.04.11 |
[코드이슈] if문에서 else와 else if를 지양하는 의견 정리 (0) | 2023.04.04 |
브라우저 저장소 정리(feat.localStorage, sessionStorage, IndexedDB) (0) | 2023.03.20 |
댓글