API대해서 배우기

Jinsu Kim·2023년 8월 21일
0

WEB

목록 보기
2/2

모든 블로그 내용들이 좋았지만 지극히 주관적으로 봤을 때 잘 정리되어 있는 블로그를 정리해두었습니다. 타이틀에 대한 설명은 아래와 같습니다.

【개념정리】: 기본 개념에 대해서 잘 간단하고 잘 정리 되어 있다고 생각된 글
【추천】: 읽어 본 글 중에 가장 이해하기 쉽고 상세한 내용도 잘 정리되어있다고 생각된 글
그외: 읽어보고 좋았던 글, 참고하면 좋은 글

API에 대해서 배우기

HATEOAS

간단정리

  • Hypermedia As The Engine Of Application State의 약자로, 기본적인 아이디어는 하이퍼미디어를 애플리케이션의 상태를 관리하기 위한 메커니즘으로 사용
  • 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것
  • Hateoas는 REST API를 잘 설계하기 위해 나온 개념이다
  • 연관된 링크도 응답(Response)으로서 함께 담아서 보내주는 개념이라고 보면된다. 
    • 장점
      • 추가적인 Action들이 링크로 제공되어, Application에서 어떤 서비스를 해주는지 한눈에 볼 수 있다
    • 목표
      • 높은 수준에서 Client와 Server를 분리시키는 것
      • 의존성을 줄여 Client와 Server각각 독립적으로 개발하는 것

오픈 API 스펙과 Swagger

간단정리

Open API

  • 단어 그대로 “개방된 API”
  • 누구나 사용될 수 있도록 API의 endpoint가 개방되어있다면 Open API가 된다.

OpenAPI

  • Open API와 다르다!
  • OpenAPI Specification(OAS)라고 부른다
  • RESTful API를 기 정의된 규칙에 맞게 API spec을 json이나 yaml로 표현하는 방식을 의미
  • RESTful API 디자인에 대한 정의(Specification) 표준

Swagger

  • OpenAPI Spec 에 맞게 디자인하고 문서화하고 빌드하기 위한 도구들의 모음
  • 구성 요소
    • Swagger Editor – 브라우저 기반의 편집기로 OpenAPI spec 을 쉽게 작성할 수 있도록 도와준다.
    • Swagger UI – OpenAPI spec 문서를 디플로이하고 브라우저에서 예쁘게 표시할 수 있도록 해준다.
    • Swagger Codegen – OpenAPI spec 에 맞게 Server 나 Client 의 stub code 를 생성해 준다.
      • 개발자는 생성된 코드에 비즈니스 로직에 집중해서 구현하면 된다.

인증

간단정리

  • 로그인 과정에서만 계정 정보를 서버에 직접 보내고, 그 후로는 세션과 쿠키를 활용하여 인증하는 방식

OAuth(다른 서비스의 회원 정보를 안전하게 사용하기 위한 방법)

기본적인 인증

토큰 인증

JWT(JSON Web Token)

간단정리

  • JWT는 JSON Web Token의 약자로 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가를 위해 사용하는 토큰으로 만든 것이다
  • 토큰을 만드는 데에는 크게 Header, Payload, Verify Signature가 필요

OpenID

SAML(Security Assertion Markup Language)

추가로 보면 좋은 사이트

간단정리

  • SSO: 한번의 로그인으로 여러개의 애플리케이션들을 이용할 수 있게해주는 서비스

REST - Roy Fieiding의 Poper 읽기

JSON APIs

【개념정리】JSON이란 무엇일까??

  • JSON = JavaScript Object Notation

SOAP(Simple Object Access Protocol)

【개념정리】 [Open API] SOAP 란?
【추천】 SOAP API VS REST API 두방식의 큰 차이점은?

간단정리

  • HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환화는 프로토콜
profile
Ruby와 js로 첫 커리어를 시작하였고 3년차 엔진니어입니다! vim에 관심이 많습니다!

0개의 댓글