이번 시간에는 다음과 같은 내용들을 알아보도록 하겠다.
HTTP
API
REST API
HTTP (HyperText Transfer Protocol)는 웹에서 통신할 때에 사용되는 규약이다.
크게 요청 (HTTP Request)과 응답 (HTTP Response)으로 나뉜다.
HTTP 요청이라 할 때에는 보통 한 컴퓨터(클라이언트)가 다른 컴퓨터(서버)에 리소스 요청을 보낼 때 사용되는 말이다.
고객(클라이언트)가 은행에 가서 은행원(서버)을 통해 계좌를 새로 개설하거나 기존 계좌에 잔금을 조회하거나 돈은 입금하거나 계좌를 닫는 등 여러 일들을 처리하는 것과 같다.
클라이언트 측에서 요청을 보내게 되는 경우 서버 측에서도 다양한 응답을 보내게 된다
전화를 걸었을 때, 상대가 전화를 받기도 하지만 끊어버리거나 없는 번호이거나 잘못된 전화를 걸었다는 안내를 받을 수도 있는 것과 같다.
상태 코드 (Status Code)
100번대에서 500번대 까지 있는 HTTP 상태 코드들의 분류는 다음과 같다.
연습을 해보고 싶다면 다음과 같은 방법을 통해 손쉽게 확인할 수 있다
1. 오른쪽 마우스 -> 검사
2. 상단 바에 오른쪽 '네트워크' 클릭
3. 페이지 이동을 하면(아무 페이지나 상관없다) 이동에 대한 정보가 생성된다
그럼 아래와 같이 확인될 것이다.
API의 역할을 간단하게 정리하자면 주방장(서버)과 손님(클라이언트)을 연결해주는 웨이터(API)라고 볼 수 있다.
API (Application Programming Interface) = 사용 규칙을 제공하는 것
OPEN API - 누군가 back-end 를 만들고 주소와 사용규칙을 공개한 것
정해진 형식은 없지만 JSON일 가능성이 제일 높다.
자바스크립트 (Javascript) 에서 'Object' 를 표기하는 방식이다.
파이썬의 딕셔너리처럼 키-값 (Key - Value) 로 묶여져 있는 구조를 볼 수 있다.
{
"name": "이로희",
"age": 20,
"address": "서울시 용산구 한남동"
}
만약 value 값이 여러개가 되면(Array배열) 대괄호로 묶을 수 있다
ex) "name": ["이로희", "강철민"]
{} Object => {"이름" : "이로희"}
[] Array => [1,2,3,4]
REST 아키텍쳐는 HTTP 를 사용할 때 일종의 가이드라인을 제시한다.
보통 REST API 를 작성했다고 하면 HTTP 메소드를 다음과 같이 사용한다 :
대표적인 상태 코드는 다음과 같다:
GET 요청은 REST 에서 정보나 리소스를 가지고 올 때만 사용하라고 제시된다.
즉, 서버에 기록된 데이터나 리소스를 변경할 때 사용해서는 안된다.
이처럼 기존 리소스에 대한 변경을 하지 않고 가져오는 역할만 하기 때문에 '안전한' 메소드라고도 볼 수 있으며,
하나의 GET 요청은 매번 동일한 결과를 나타내야 한다 (서버의 리소스가 변경되지 않았다는 가정하에).
GET 요청은 특정 리소스를 가지고 올 때 사용이 되고 기존 정보를 변경하거나 하는 작업을 하지 않는다.
1. HTTP GET http://www.domain.com/users
/users 로 끝나고 서버에 기록된 유저들을 가져올 거라고 예상할 수 있다.
2. HTTP GET http://www.domain.com/users?size=20&page=5
마찬가지로 유저를 가지고 오지만 추가 쿼리 파라미터 (? 뒤에 오는 항목들)를 통해 페이지와 개수를 정해주고 있다.
3. HTTP GET http://www.domain.com/users/123
유저를 가지고 오지만 유저 목록 중에서 123 에 일치하는 유저를 가지고 올 거라는 예상을 할 수 있다.
4. HTTP GET http://www.domain.com/users/123/address
3번의 유저 정보에서 address 정보만 가지고 올 거라는 예상을 할 수 있다.
다음 시간에는 지금 배운 내용들을 가지고 실제로 API를 이용한 실습을 해보도록 하겠다.