CLI(Command Line Interface): 명령줄로 소통하는 방법GUI(Graphic User Interface): 그래픽으로 유저와 소통하는 방법API(Application Programming Interface): 프로그래밍으로 어플리케이션과 소통하는 방법기계와 인간간의 소통뿐만 아니라 소프트웨어와 소프트웨어 간에도 수많은 소통이 존재한다!
이러한 소통에는 서로 약속된 형식이 필요한데 그것이 API !
REST
Representaional State Transfer
웹에 대한 소프트웨어 설계 방법론. 네트워크 통신에서 리소스를 정의하고 접근하는 방식을 나타내는 아키텍쳐 스타일.
RESTful API
RESTful API는 REST 원칙을 따르는 API를 의미하며, 이를 통해 클라이언트와 서버 간의 통신이 이루어진다. 즉 어플리케이션간 소통하는 방법에 REST적인 표현을 더한 것!
RESTful API는 주로 HTTP 프로토콜을 사용하며, 자원(Resource)을 URL로 표현하고, HTTP 메서드를 사용해 자원을 처리한다.
RESTful API는 시스템 간 통신에서 효율적이며, 설계가 간결하고 유지보수가 쉬운 장점이 있다.
https://example.com/api/users/GET: 리소스 조회 /articles/ -> article 목록 조회POST: 새로운 리소스 생성 /articles/ -> 새로운 article 생성PUT: 기존 리소스 수정DELETE: 리소스 삭제 articles/1/-> 1번 article 삭제PATCH: 리소스의 일부만 수정| 리소스 | POST | GET | PUT | DELETE |
|---|---|---|---|---|
| /blog | 새 포스팅 작성 | 모든 포스팅 목록 | 포스팅 대량 업데이트 | 모든 포스팅 삭제 |
| /blog/1 | 오류 | 포스팅 1에 대한 내용 | 포스팅 1의 정보 갱신 | 포스팅 1 삭제 |
| /blog/1/comments/ | 포스팅 1의 새 댓글 작성 | 포스팅 1에 대한 모든 댓글 목록 | 포스팅 1의 댓글 대량 업데이트 | 포스팅 1의 모든 댓글 삭제 |
Stateless
서버는 클라이언트의 상태를 저장하지 않으며 요청은 독립적이어야 한다. 각 요청은 자체적으로 필요한 모든 정보를 포함해야 한다.
URI(Uniform Resource Identifier)
리소스를 식별하는 데 사용되는 고유한 경로.
예: /users/123/는 ID가 123인 사용자를 나타낸다.
URI는 동사가 아닌 명사의 나열로 사용
POST /articles/create/(X)
POST /articles/(O)
핵심규칙
자원: URI로 표현행위: HTTP Method로 표현표현: 자원과 행위를 통해 표현되는 결과물로 일반적으로 JSON형식을 사용JSON은 데이터를 구조화하여 표현하는 경량 데이터 형식으로, RESTful API에서 주로 데이터를 교환하는 형식으로 사용된다. JSON은 사람과 기계 모두가 쉽게 읽고 쓸 수 있으며, 속성-값 쌍으로 데이터를 표현한다.
.json형식으로 사용된다.
문자는"으로 묶여야하며truefalse숫자등을 사용할 수 있다.
객체: 중괄호 {}로 묶여 있으며, 키-값 쌍으로 구성된다.{ "name": "John", "age": 30 }
배열: 대괄호 []로 묶여 있으며, 여러 값을 담을 수 있다.[ "apple", "banana", "cherry" ]
{
"user1": {
"name": "yun",
"age": "10",
"tags": ["python", "javascript", "django"]
},
"user2": {
...
},
...
}