https://hye-story-o0o.tistory.com/54
❓ API
API 는 Application Programming Interface 의 약자로, 소프트웨어 간 상호작용을 가능하게 하는 인터페이스를 의미한다.
쉽게 말하자면 소프트웨어끼리 서로 대화할 수 있도록 도와주는 도구? 라고 생각하면 된다.
두 프로그램이 서로 정보를 주고받으려면 어떤 규칙이 필요한데, 이 규칙을 API 가 제공한다.
예를 들어, 우리가 스마트폰에서 날씨 앱을 사용할 때, 날씨 정보를 보여주기 위해 앱은 날씨 정보를 제공하는 서버와 소통을 해야 한다. 이때 앱과 서버가 서로 정보를 주고받기 위해 사용하는 규칙이 바로 API 이다.
앱이 서버한테 "오늘 날씨 좀 알려줘" 라고 요청하면, 서버는 그 규칙에 맞춰 응답하는 방식으로 정보를 보내주는 것이다.
❓ REST API(RESTful API)
자주 접하는 API 유형 중 하나인 REST API 는 주로 웹에서 데이터를 주고받을 때 많이 사용하는 방식이다.
이 규칙은 HTTP(우리가 웹 사이트에 접속할 때 사용하는 프로토콜)를 기반으로 작동한다.
예를 들어, 웹페이지에서 사용자 정보를 얻으려면 클라이언트(브라우저)가 서버에 "이 사용자 정보를 보여줘" 라고 요청을 보내고, 서버는 이 요청에 맞는 정보를 돌려준다. 이렇게 데이터를 주고받는 방식이 REST API 이다.
❗ HTTP 메서드
HTTP 메서드는 REST API 에서 서버와 통신할 때 어떤 작업을 할지를 지정하는 방법이라고 생각하면 된다.
각 메서드는 특정한 작업을 하는데, 주로 데이터를 추가/조회/수정/삭제하는 데 사용된다. 이를 CRUD 작업이라고 부른다.
- Create: 데이터 새로 만들기
- Read: 데이터를 읽거나 조회하기
- Update: 데이터 수정하기
- Delete: 데이터 삭제하기
이 작업들은 각각의 HTTP 메서드와 연결된다.
1. GET: 서버에서 정보를 가져올 때 사용
- 예: GET/users/1 → 서버에 "ID 가 1인 사용자의 정보를 주세요!" 라고 요청하는 것과 같다. 데이터를 조회하는 용도이다.
2. POST: 서버에 새로운 데이터를 보내서 생성할 때 사용
- 예: POST/users → 서버에 "새로운 사용자를 만들어주세요!" 라고 요청하는 것과 같다. 새 데이터를 추가하는 용도이다.
3. PUT: 기존 데이터를 수정할 때 사용
- 예: PUT/users/1 → 서버에 "ID 가 1인 사용자의 정보를 수정해주세요!" 라고 요청하는 것과 같다. 데이터를 업데이트하는 용도이다.
4. DELETE: 특정 데이터를 삭제할 때 사용
- 예: DELETE/users/1 → 서버에 "ID 가 1인 사용자를 삭제해 주세요!"라고 요청하는 것과 같다. 데이터를 삭제하는 용도이다.
❗ REST API 설계 원칙
1. 무상태성(Statelessness)
무상태성은 서버가 클라이언트의 상태를 기억하지 않는 것을 의미한다.
클라이언트가 서버에 요청할 때, 서버는 클라이언트가 이전에 무엇을 했는지 기억하지 않고, 클라이언트가 필요한 모든 정보를 요청에 담아 보내야 한다.
예를 들면, 사용자가 로그인한 상태를 유지하는 것이 아니라, 클라이언트는 매 요청마다 인증 정보를 서버에 함께 보내야 한다는 것이다.
2. 캐시 가능성(Cacheability)
캐시 가능성은 서버의 응답을 저장해 둘 수 있는 기능을 말한다.
자주 사용하는 데이터를 서버에서 매번 받아오는 대신, 브라우저나 애플리케이션에 저장해 두고 다시 사용할 수 있다.
예를 들어, 우리가 자주 방문하는 웹사이트의 로고나 이미지가 브라우저에 저장되어, 다음에 방문할 때 빠르게 로드된다.
++) 캐시?
같은 데이터를 여러 번 가져오는 대신, 한 번 가져온 데이터를 저장해 두고, 필요할 때 다시 사용할 수 있게 해주는 것.
3. 클라이언트-서버 구조(Client-Server Architecture)
클라이언트-서버 구조는 클라이언트와 서버의 역할이 서로 나뉘어 있다는 것을 말한다.
쉽게 말해, 클라이언트는 웹사이트를 보여주는 역할을 하고, 서버는 데이터(정보)를 제공하는 역할을 한다. 즉, 클라이언트와 서버는 서로 독립적으로 동작한다.
4. 계층화 시스템(Layered System)
계층화 시스템은 요청과 응답이 여러 단계를 거쳐 처리된다는 것을 의미한다.
클라이언트가 서버에 요청하면, 이 요청은 여러 단계를 거쳐 처리되는데, 클라이언트는 이러한 단계를 알 필요 없이, 서버와 직접 통신하는 것처럼 느껴진다.
5. 통일된 인터페이스(Uniform Interface)
통일된 인터페이스는 모든 요청과 응답이 일관된 방식으로 처리된다는 것을 의미한다.
무슨 말이냐면! 데이터에 접근하는 방법이 일정하고, 모든 자원(정보)은 같은 규칙을 따른다는 것이다.
예를 들어, /users URL 로 모든 사용자 정보를 처리하고, GET/POST/PUT/DELETE 등의 HTTP 메서드를 일관되게 사용하는 것이다.
📝 정리
1. API 는 두 프로그램이 소통할 수 있게 해주는 규칙이다.
2. REST API 는 HTTP 를 사용해서 웹에서 데이터를 주고받는 데 주로 사용하는 방식이다.
3. HTTP 메서드
- GET: 서버에서 정보를 가져옴(데이터 조회)
- POST: 새로운 데이터 추가
- PUT: 데이터 수정
- DELETE: 데이터 삭제
4. REST API 설계 원칙
- 무상태성
- 캐시 가능성
- 클라이언트-서버 구조
- 계층화 시스템
- 통일된 인터페이스
💡 참고 자료
https://aws.amazon.com/ko/what-is/api/
https://www.ibm.com/kr-ko/topics/rest-apis
https://meetup.nhncloud.com/posts/92
https://developer.mozilla.org/ko/docs/Web/HTTP/Caching
'Networking' 카테고리의 다른 글
HTTP 상태 코드 정리 (0) | 2024.09.15 |
---|