API란?
프로그램과 프로그램을 연결 시켜주는 매개체
요즘 앱들은 다른 앱기능과 연동되어 있는 경우가 많습니다.
배달 음식 전문 앱을 생각해봅시다.
내 위치를 파악하는 지도기능, 사진찍어 리뷰를 올리는 기능, 내 휴대폰 주소록에 있는 친구에게 상품권 선물하기 기능 등 다양한 기능들을 사용할 수 있습니다.
이처럼 다른 프로그램끼리의 연결을 원활하게 하기위해서는 규칙을 잘 설계하는것이 중요합니다.
API는 이런 규칙들의 집합이라고 볼 수 있습니다.
프로그램의 기능들을 미리 정리해서 규칙을 잘 세워둔다면, 클라이언트는 접근할 프로그램에 대해 모르더라도 API를 통해 원활히 통신을 할 수 있는거죠.
API 서버란?
API로 규격화 된 서버
Client가 액션(회원가입, 좋아요, 포스팅, 링크공유 등등)을 하면 Send Request > 서버가 받아서 처리 후 > Client에게 돌려줌 Return Response
이 서버가 받아서 처리하는 중간 과정이 API (Application Programming Interface)입니다.
즉, DB와 클라이언트사이에서 데이터와 기능들을 어떻게 주고받게 할 것인가를 정한 통신규약 !
클라이언트는 데이터베이스가 아닌 API 서버와 통신하게 되는 것이죠.
서버개발자는 API를 토대로 DB를 만든다.
1) 화면 기획서를 받는다.
2) 데이터 베이스 설계
3) 서버 개발을 위해 API 명세서를 만든다 << 화면 기획서를 토대로
4) API 명세서를 보고 스프링부트로 서버 개발코드 작성
5) API 1개씩 만들고 포스트맨으로 테스트
API를 어떻게 설계하였느냐에 따라
시스템의 성능과 유지보수 용이성, 사용자 경험이 크게 달라질 수 있다.
REST API란
HTTP를 활용하여 자원(Resource)을 관리하기 위해 설계된 애플리케이션 프로그래밍 인터페이스(API)
REST(Representational State Transfer)
Representational : 자원의 표현, 서버에서 제공하는 데이터나 정보의 형태. 사용자의 정보나 제품 목록
State: 자원의 상태. 특정 시점에서 자원이 가지고 있는 정보
Transfer: 이런 자원의 상태를 클라이언트와 서버간 전송되는 과정
즉 자원(리소스)의 표현으로 상태를 전달하는것!
REST API의 특징
- Stateless (무상태성): 작업을 위한 별도 상태정보(저장할 상태 데이터, 세션, 쿠키 등)이 없기 때문에 단순한 구현이 가능합니다.
- Cacheable (캐시 가능): HTTP 웹 표준을 사용하여, 캐싱 기능을 사용할 수 있다.
- Client-Server 구조: 클라이언트와 서버는 서로 독립적으로 작동하며, 클라이언트는 사용자 인터페이스를 관리하고 서버는 데이터 저장 및 비즈니스 로직을 처리합니다.
- Uniform Interface (일관된 인터페이스): URI로 지정된 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하며, 특정 언어나 기술에 종속되지 않습니다.
- Layered System (계층화된 시스템): API는 여러 계층(API서버, 데이터베이스 서버, 인증 서버 등등 각각의 기능을 담당하는 서버)으로 구성될 수 있으며, 각 계층은 독립적으로 작동할 수 있습니다.
- Self-descriptiveness (자체 표현성): API를 통해 전송되는 메시지는 자체적으로 의미를 전달할 수 있어야 하며, 별도의 문서 없이도 이해할 수 있어야 합니다.
REST API의 구성
- 자원Resource - 우리가 다루고 싶은 정보나 데이터를 URI 로 표현.
ex) 유저를 나타내고 싶다! /user/1
자원의 식별을 위해 명사형으로 표현, 동사사용 지양! - 행위Method - GET /POST/DELETE/PUT 같은 CRUD HTTP 메서드 로 표현
- 표현Message - Json, XML 등의 형식을 이용한 표현
REST API 활용 예시
카카오 로그인 API
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
어디(url)에 무엇을 (Parameter)를 보내면 무슨 응답(Response)을 줄지 약속되어 있는것을 알 수 있습니다.
RESTful API란?
이러한 REST의 원칙들을 잘 준수하여 만들어진 API를 RESTful하다 하여 RESTful API라고 합니다.
이렇게 REST API는 간단명료하고 유연(다양한 플랫폼, 언어 호환)하여 현대 사회에서 가장 많이 쓰이는 규약이 되었습니다.
URI 와 URL
URI이란?
인터넷에서 자원을 식별하는 모든 방법을 통칭
URL의 상위 개념
URL이란?
자원의 위치를 나타내는 규약
URL은 스키마(scheme), 호스트(host), 경로(path), 쿼리(query) 등의 요소로 구성됨.
URL 구성 명칭
http://opentutorials.org:300/main?id=HTML&page=12
http:// | opentutorials.org | :300 | /main | ?id=HTML&page=12 |
protocol | host(domaim) | port | path | query String |
URI와 URL의 주요 차이점
식별VS위치
URI는 자원을 식별하는것에, URL은 자원의 위치를 가리키는데에 중점을 둔다.
API를 디자인하고 빌드하고 테스트하기 위한 Postman
Download Postman | Get Started for Free
Try Postman for free! Join 35 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.
www.postman.com
API 명세서를 확인해서
요청사항을 파악한 후 Postman에서 이 API가 어떻게 작동해야할지 디자인하고나서 코드를 작성하자.
>> Spring Initializar로 프로젝트 생성하기
>> DB와 서버 연결하기
https://aws.amazon.com/ko/what-is/restful-api/
RESTful API란 무엇인가요? - RESTful API 설명 - AWS
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애
aws.amazon.com