연습장

REST API 본문

기타

REST API

js0616 2024. 7. 26. 05:31

API (Application Programming Interface)

 

정의 (주관적인 해석을 곁들인...)
소프트웨어 응용 프로그램이 서로 상호 작용할 수 있도록 만들어진 인터페이스입니다.

사전에 만들어놓은 기능이나 데이터를 프로그램 사이에서 주고 받기 위한 방법으로 사용 됩니다.

 

특징

 

  • API는 일반적으로 문서화되어 있어서 사용 방법이 명확합니다.
  • API 호출은 일반적으로 비동기적으로 처리되며, 요청과 응답은 데이터 형식(JSON, XML 등)으로 전송됩니다.

 

API 구조

  • 엔드포인트(Endpoint) : API에서 특정한 리소스에 접근할 수 있는 URL입니다.
  • 요청 방식 : HTTP(주로사용), HTTPS, WebSocket, FTP, SMTP, RPC
  • 요청 및 응답 형식 : JSON , XML
  • 매개변수 : API 요청에 포함되는 추가적인 정보를 나타냅니다.
  • 오류 처리 : API에서 발생할 수 있는 오류 상황을 정의하고, 그에 따른 오류 코드와 메시지를 명시합니다.

 

JSON

{
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com"
}

 

XML

<person>
  <name>John Doe</name>
  <age>30</age>
  <email>john.doe@example.com</email>
</person>



API 의 종류
public API : 누구나 사용가능한 공개 API
private API : 사내에서 몰래쓰는 API
partner API : 미리 정해둔 놈만 쓰는  API

다른 프로그램 API
Widows API 
Database 관리프로그램 API 

 


REST API(Representational State Transfer API)

 

REST API는 자원(Resource), 행위(Verb), 표현(Representations)의 3가지 요소로 구성된다. REST는 자체 표현 구조(Self-descriptiveness)로 구성되어 REST API만으로 요청을 이해할 수 있다.

 

자원은 URI를 통해 표현되고, 행위는 HTTP Method를 통해 알 수 있습니다.

 

  1. 리소스: 모든 자원(리소스)에는 고유한 식별자가 있으며, 이를 통해 접근하고 상호작용합니다. 예를 들어, users, posts 등의 자원이 있을 수 있습니다.
  2. HTTP 메서드: HTTP 메서드를 활용하여  자원에 대해 CRUD 와 같은 작업을 수행하게 됩니다.
    • GET: 리소스를 조회합니다.
    • POST: 새로운 리소스를 생성합니다.
    • PUT: 리소스를 업데이트합니다(전체 업데이트).
    • PATCH: 리소스의 일부를 업데이트합니다.
    • DELETE: 리소스를 삭제합니다.

 

  • REST 의 주요 설계 원칙
    1. 균일한 인터페이스 (Uniform Interface):
      • 모든 API 요청은 동일한 방식으로 처리되어야 하며,
      • 동일한 리소스는 일관된 URI를 통해 접근해야 합니다.
      • 리소스는 명확하게 식별되며, 클라이언트가 필요한 모든 정보를 제공해야 합니다.
    2. 클라이언트-서버 분리 (Client-Server Separation):
      • 클라이언트와 서버는 완전히 독립적이어야 합니다.
      • 클라이언트는 리소스의 URI만 알고 있으면 되고, 서버는 요청한 정보만 전달하면 된다. 
    3. 무상태 (Stateless):
      • 서버는 클라이언트의 상태를 저장하지 않습니다.
      • 각 요청에는 필요한 모든 정보(토큰) 가 포함되어야 합니다.
    4. 캐시 가능성 (Cacheability):
      • 클라이언트와 서버 측에서 리소스를 저장하여 성능과 확장성을 개선하는 방법입니다.
      • 서버 응답에는 캐싱 허용 여부에 대한 정보가 포함되어야 하며,
      • 이로 인해 클라이언트 성능이 향상되고 서버의 부하가 줄어들어 확장성이 높아집니다.
    5. 계층화된 시스템 아키텍처 (Layered System Architecture):
      • REST API는 클라이언트와 서버가 직접 연결되지 않고 다양한 중개자를 거칠 수 있도록 설계됩니다.
      • 클라이언트와 서버는 최종 애플리케이션 또는 중개자와의 직접적인 상호작용을 알 필요가 없도록 합니다.
    6. 코드 온디맨드 (Code on Demand) [선택 사항]:
      • REST API는 주로 정적 리소스를 전송하지만, 때로는 응답에 실행 코드가 포함될 수 있습니다.
      • 이 경우, 코드는 필요할 때만 실행되어야 합니다.

 

REST API는 간단하면서도 유연하며, 다양한 클라이언트(웹, 모바일 애플리케이션 등)와 통신하기에 적합합니다. 이러한 특성으로 인해 현재 대부분의 웹 API는 RESTful API로 구현됩니다.

 

RESTful은 REST의 원칙을 완벽하게 따르는 API라는 의미를 가집니다

 

 

https://www.ibm.com/kr-ko/topics/rest-apis

 

REST API란 무엇인가요? | IBM

REST API는 REST(Representational State Transfer) 아키텍처 스타일의 설계 원칙을 준수하는 API(애플리케이션 프로그래밍 인터페이스)입니다.

www.ibm.com

 

 

 


 

 

 

 

 

https://velog.io/@younoah/uri-url-urn

 

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80#google_vignette

 

https://poiemaweb.com/js-rest-api

 

'기타' 카테고리의 다른 글

메모리 구조  (0) 2024.07.27
파싱 Parsing  (0) 2024.07.26
프로세스와 스레드  (0) 2024.07.25
서브넷과 포트번호  (0) 2024.07.25
렌더링 방식 (SSR,CSR, SPA, MPA)  (0) 2024.07.25