✅ API란?
- 다른 소프트웨어 시스템과 통신하기 위해 따라야하는 규칙을 정의
- 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성
✅ 클라이언트
- 웹에서 정보에 접근하려는 사용자
- API를 사용하는 사람 또는 소프트웨어 시스템
✅ 리소스
- 서버가 클라이언트에게 제공하는 정보
- 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터
- 조직은 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하면서 웹 서비스를 제공
- API는 특정 내부 리소스에 액세스 할 수 있는 클라이언트를 결정하는 데 도움이 됨
✅ REST란?
- API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- REST 아키텍처 스타일을 따르는 API를 REST API 라고 한다.
- REST 아키텍처를 구현하는 웹서비스를 RESTful 웹 서비스라고 한다.
✅ REST의 특징
- Uniform interface
- HTTP 표준 방식을 활용한다면, URI로 지정한 리소스에 대한 동작이 어떤 플랫폼에서도 동일하다.
- API 정의를 HTTP + JSON으로 정했다면, 특정 언어나 기술에 종속 받지 않고 사용이 가능하다.
- Stateless
- 세션이나 쿠키 정보(작업을 위한 상태 정보)를 따로 관리하지 않는다.
- API 서버는 단지 들어오는 요청만을 처리한다.
- 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아도 된다.
- Caching
- HTTP가 가진 캐싱 기능을 사용할 수 있다.
- RESTful 웹 서비스는 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원합니다.
- Self descriptiveness
- API 메시지만 보아도 무엇을 의미하는지 알 수 있다.
- Client - Server
- 클라이언트와 서버의 역할이 명확히 구분되어 있어 서로에 대한 의존성이 줄어든다.
- REST 서버는 API를 제공하고, 클라이언트는 사용자 인증, 컨텍스트 등을 관리한다.
- Hierarchical system
- 다중 계층으로 구성할 수 있어 보안, 암호화 계층을 추가할 수 있다.
✅ Rest API method:
- Get : 클라이언트가 서버의 리소스에 접근해야할 때 사용한다. (Read)
- POST : 클라이언트가 서버에 데이터를 전송해 서버에 저장하거나, 확인이 필요할 때 사용한다. (Create)
- PUT : 클라이언트가 서버에 데이터를 전송해 서버의 기존 리소스를 갱신 할 때 사용한다. 모든 리소스를 갱신한다. (Update)
- Patch: 클라이언트가 서버에 데이터를 전송해 서버의 기존 리소스를 갱신 할 때 사용한다. 부분적인 리소스를 갱신한다. (Update)
- Delete: 클라이언트가 서버에 delete를 요청해 리소스를 제거한다. 이 요청은 서버의 상태를 변경할 수 있지만, 사용자에게 적절한 인증이 없으면 요청은 실패한다. (Delete)
✅ Restful API 작동 방식:
- 클라이언트가 서버에 요청을 전송한다. 클라이언트가 API문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정한다.
- 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인한다.
- 서버가 요청을 수신하고 내부적으로 처리한다.
- 서버가 클라이언트 응답을 반환한다. 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함된다. 응답에는 클라이언트가 요청한 모든 정보도 포함된다.
✅ URI 설계시 주의점
- 슬래시(/)는 계층 관계를 나타내는데 사용한다.
- URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
- 하이픈(-)을 사용하여 URI 가독성을 높인다.
- 밑줄(_)은 사용하지 않는다.
- 파일 확장자(.jpg, .png 등)는 포함하지 않는다.
Source
https://aws.amazon.com/ko/what-is/restful-api/
https://hoyeonkim795.github.io/posts/restful_api/
'Web' 카테고리의 다른 글
[HTTP 웹 기본 지식] 섹션4. HTTP 메서드 (0) | 2022.11.17 |
---|---|
[HTTP 웹 기본 지식] 섹션3. HTTP 기본 (0) | 2022.11.17 |
[HTTP 웹 기본 지식] 섹션2. URI와 웹 브라우저 요청 흐름 (0) | 2022.11.16 |
[HTTP 웹 기본 지식] 섹션1.인터넷 네트워크 (0) | 2022.11.04 |
[Web] CORS (Cross Origin Resource Sharing) (2) | 2022.09.07 |