API

Fox·2023년 12월 26일
0
post-thumbnail

API란?

정의

  • API는 Application Programming Interface의 줄임말이다.
  • 다양한 소프트웨어나 서비스가 서로 상호작용할 수 있게 해 주는 도구나 규약을 의미한다.

예시

  • API란 가게의 점원이라 볼 수 있다.
  • 주문을 받고 요리사에게 전달하고, 받은 음식을 손님에게 내어준다.
  • 점원의 역할처럼 API는 중간 전달자이다.

  • API는 양쪽의 서버를 연결 해 주는 역할을 수행한다.

장점

  • 데이터를 요청하고 받는 과정을 간소화해주기 때문에 개발자들이 효율적으로 프로그램을 만들 수 있다.
  • 다양한 서비스를 쉽게 통합할 수 있도록 도와준다.


Open API란?

정의

  • 말 그대로 "누구나 쓸 수 있도록 공개된(Open) API" 이다.
  • 개발 시 들어가는 비용과 시간을 줄일 수 있다.
  • 대표적으로 공공데이터포털(www.data.go.kr)에서 제공하는 OpenAPI가 있다.

Open API 제공이유

  • 자사 서비스의 기능을 다양한 서비스에서 활용할 수 있도록 유도하기 위함이다.
  • 서비스의 저변을 넓히는데 목적이 있다.
  • 특히 대기업은 시장확대를 목적으로, 비영리기관에서는 공공의 목적으로 제공하는 경우가 있다.


REST API란?

REST란?

정의

  • REST는 Representational State Transfer의 약자이며 웹 서비스를 구축하기 위한 아키텍처 스타일이다.
  • 클라이언트와 서버 간의 상호작용을 위한 원칙과 규칙을 제시하며 통신방식 중 하나이다.

특징

  • 자원 지향(Resource-Oriented)
    - REST는 모든 자원(데이터, 기능 등)을 고유한 URI(Uniform Resource Identifier)로 표현한다.
    - 각 자원은 고유한 식별자를 가지며, 클라이언트는 URI를 통해 자원에 접근한다.

  • 상태 없음(Stateless)
    - REST는 서버가 클라이언트의 상태를 관리하지 않는 상태 없음(Stateless) 특징을 가지고 있다.
    - 클라이언트의 요청은 필요한 모든 정보를 포함하고 있어야한다.
    - 서버는 각 요청을 독립적으로 처리한다.

  • 통일된 인터페이스 (Uniform Interface)
    - REST는 통일된 인터페이스를 제공하여 서버와 클라이언트 간의 상호작용을 단순화 한다.
    - 이를 위해 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하며, 자원을 조작하고 HTTP 상태 코드를 통해 작업 결과를 전달한다.

  • 자체 표현 (Self-Descriptive)
    - 메시지 자체만으로도 어떤 동작을 수행하는지 이해할 수 있어야한.
    - 이를 위해 MIME 타입과 같은 표준을 사용하여 메시지를 명확하게 정의한다.

  • 계층 구조 (Layered System)
    - REST 아키텍처는 다중 계층으로 구성될 수 있다.
    - 이를 통해 보안, 로드 밸런싱, 캐싱 등을 위한 중간 계층을 추가할 수 있다.

  • REST는 웹 서비스의 설계와 개발을 단순화하고, 다양한 클라이언트와의 상호 운용성을 제공하는 장점이 있다.

  • 또한, RESTful API를 통해 서비스를 제공하는 경우, 클라이언트는 URI를 통해 쉽게 자원을 식별하고 조작할 수 있다.

REST 의 장단점

  • 장점

    • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
    • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
    • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
    • 서버와 클라이언트 역할을 명확하게 분리한다.
  • 단점
    - 표준이 존재하지 않는다.
    - 사용할 수 있는 메소드가 4가지(HTTP Method) 뿐이다.
    - 구형 브라우저에서 아직 제대로 지원해주지 못하는 부분이 존재한다.
    - PUT, DELETE를 사용하지 못하는 점.

REST API란

정의

  • REST 기반으로 서비스 API를 구현한 것 이다.
  • OpenAPI(누구나 사용할 수 있는 공개된 API) 는 대부분 REST API를 제공한다.

REST API 설계규칙

1. 소문자를 사용한다.

대문자는 때로 문제를 일으키는 경우가 있기 때문에 URI를 작성할 때는 소문자를 선호한다.

❌ https://velog.io/@imfox/Posts
⭕ https://velog.io/@imfox/posts

2. 언더바(_) 대신 하이픈(-)을 사용한다.

  • 가독성을 위해 긴 Path를 표현하는 단어는 하이픈(-)으로 구분하는 것이 좋다.

  • 프로그램의 글자 폰트에 따라 언더바 문자는 부분적으로 가려지거나 숨겨질수 있다. 

❌ https://velog.io/@imfox/JVM-Java_Virtual_Machine
⭕ https://velog.io/@imfox/JVM-Java-Virtual-Machine

3. 마지막에 슬래시(/)를 포함하지 않는다.

  • 후행 슬래시(/)는 의미가 전혀 없고 혼란을 야기할 수 있다.

  • URI내의 모든 문자는 리소스의 고유 ID에 포함된다. URI 가 다르면 리소스도 다르기 때문에 명확한 URI를 생성해야한다.

❌ https://velog.io/@imfox/JVM-Java-Virtual-Machine/
⭕ https://velog.io/@imfox/JVM-Java-Virtual-Machine

4. 행위를 포함하지 않는다.

  • 행위는 URI 대신 Method를 사용하여 전달한다.
❌ POST http://velog.io/@imfox/users/post/1
⭕ PUT http://velog.io/@imfox/users/1

5. 파일 확장자는 URL에 포함시키지 않는다.

  • 파일 확장자는 URI에 포함하지 말아야한다. 대신 Content-Type 헤더를 통해 전달되는대로 미디어 타입을 사용하여  body 콘텐츠를 처리하는 방법을 결정한다.

  • Rest API 클라이언트는 HTTP에서 제공하는 형식 선택 메커니즘인 Accept 요청 헤더를 활용하도록 권장해야한다.

❌ http://velog.io/@imfox/users/photo.jpg
⭕ GET http://velog.io/@imfox/users/photo
   HTTP/1.1 Host: velog.io/@imfox Accept: image/jpg

6. 전달하고자 하는 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 사용한다.

❌ http://velog.io/@imfox/course/writing
⭕ http://velog.io/@imfox/course/write

7. URI에 작성되는 영어를 복수형으로 작성한다.

  • 하나의 인스턴스를 복수형으로 표시하는게 문법적으로 맞지 않겠다고 생각할수 있지만 URI의 형식을 복수형으로 사용하는 것이 실무에서 많이 사용되고 있다.
⭕ http://velog.io/@imfox/students/3248234/courses


RESTful API란?

정의

  • RESTful API는 웹 서비스를 개발할 때 널리 사용되는 방식이다.
  • 클라이언트 애플리케이션은 RESTful API를 호출하여 서버의 자원에 접근하고 조작할 수 있다.
  • 이를 통해 분산된 시스템 간의 통신과 데이터 교환을 효율적으로 처리할 수 있다.

즉, REST, RESTful API, REST API는 비슷한 개념을 나타내지만, REST는 아키텍처 스타일을 의미하며, RESTful API는 이 아키텍처 스타일을 따르는 API를 의미한다.

RESTful의 목적

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것

RESTful하지 못한 경우

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글