상세 컨텐츠

본문 제목

HTTP / API / REST API / JSON 개념설명

카테고리 없음

by simplecode 2021. 7. 17. 19:36

본문

이번 시간에는 다음과 같은 내용들을 알아보도록 하겠다.


HTTP

API

REST API

 


HTTP란

HTTP (HyperText Transfer Protocol)는 웹에서 통신할 때에 사용되는 규약이다.

크게 요청 (HTTP Request)응답 (HTTP Response)으로 나뉜다.

 

 

 

출처 : https://www.javatpoint.com/computer-network-http

 

요청 (HTTP Request)

HTTP 요청이라 할 때에는 보통 한 컴퓨터(클라이언트)가 다른 컴퓨터(서버)에 리소스 요청을 보낼 때 사용되는 말이다.

고객(클라이언트)가 은행에 가서 은행원(서버)을 통해 계좌를 새로 개설하거나 기존 계좌에 잔금을 조회하거나 돈은 입금하거나 계좌를 닫는 등 여러 일들을 처리하는 것과 같다.

   CRUD - 데이터를 다룰 수 있는 몇가지 중요한 HTTP 방법

  • GET : 특정 리소스를 달라고 할 때에 사용  ex) 페이지 로딩할 때
  • POST : 서버 측의 특정 리소스를 저장할 때 사용  ex) 회원가입을 할 때에 특정 유저의 정보를 서버에 저장
  • PUT/PATCH : 서버 측의 특정 리소스를 업데이트 할 때 사용  ex) 사용자 닉네임 변경
  • PUT 은 데이터 전부를 바꿀 때, PATCH 는 부분적으로 변경할 때 사용.
  • DELETE : 서버 측의 특정 리소스를 삭제  ex) 유저 탈퇴

응답 (HTTP Response)

클라이언트 측에서 요청을 보내게 되는 경우 서버 측에서도 다양한 응답을 보내게 된다

전화를 걸었을 때, 상대가 전화를 받기도 하지만 끊어버리거나 없는 번호이거나 잘못된 전화를 걸었다는 안내를 받을 수도 있는 것과 같다.

 

   상태 코드 (Status Code)

   100번대에서 500번대 까지 있는 HTTP 상태 코드들의 분류는 다음과 같다.

  • 100 번대 : 정보 응답
  • 200 번대 : 성공 응답
  • 300 번대 : 리다이렉션 메시지
  • 400 번대 : 클라이언트 에러 응답
  • 500 번대 : 서버 에러 응답

 


HTTP example

연습을 해보고 싶다면 다음과 같은 방법을 통해 손쉽게 확인할 수 있다

 

1. 오른쪽 마우스 -> 검사
2. 상단 바에 오른쪽 '네트워크' 클릭
3. 페이지 이동을 하면(아무 페이지나 상관없다) 이동에 대한 정보가 생성된다

 

그럼 아래와 같이 확인될 것이다.

  • 'Request Method': 이전에 봤던 HTTP 요청 메소드 중 GET, 리소스를 가져온다는 뜻인 메소드를 사용
  • 'Status Code' : 200 이라는 숫자 앞에 초록색 불이 들어와 있는데 200 은 'OK', GET 요청이 성공했다는 뜻이다. 
  • 'Request URL' : 누가 요청을 하고 있는지를 담고 있다.
  • 'Remote Address' : 어느 리모트 서버에 요청을 하고 있는지 알려주고 있다. 23.211.117.51 의 443 포트에 요청을 보내고 있다.
  • 'Referrer Policy' : 요청을 보내는 곳이 당사자인지, 타 웹사이트에서 연결된 건지 등 알려준다. 현재는 현 웹사이트에서 보내고 있다.

 


 

A P I

API의 역할을 간단하게 정리하자면 주방장(서버)과 손님(클라이언트)을 연결해주는 웨이터(API)라고 볼 수 있다.

API (Application Programming Interface) = 사용 규칙을 제공하는 것

OPEN API  - 누군가 back-end 를 만들고 주소와 사용규칙을 공개한 것

 

API 응답

정해진 형식은 없지만 JSON일 가능성이 제일 높다.

JSON (Javascript Object Notation)

자바스크립트 (Javascript) 에서 'Object' 를 표기하는 방식이다.

파이썬의 딕셔너리처럼 키-값 (Key - Value) 로 묶여져 있는 구조를 볼 수 있다.

{
        "name": "이로희",
        "age": 20,
        "address": "서울시 용산구 한남동"
}

만약 value 값이 여러개가 되면(Array배열) 대괄호로 묶을 수 있다

ex) "name": ["이로희", "강철민"]

 

 

{} Object => {"이름" : "이로희"}

[] Array => [1,2,3,4]

 

 

 


 

REST API

 

REST API(REpresentational State of Transfer)는 소프트웨어 아키텍쳐의 한 형식이다.

REST 아키텍쳐는 HTTP 를 사용할 때 일종의 가이드라인을 제시한다. 

 

HTTP Request

보통 REST API 를 작성했다고 하면 HTTP 메소드를 다음과 같이 사용한다 :

  • GET : 데이터를 조회
  • POST : 데이터를 생성
  • PATCH : 데이터를 업데이트 (일부 변경)
  • PUT : 데이터를 업데이트 (전체 변경)
  • DELETE : 데이터 삭제

HTTP Response

대표적인 상태 코드는 다음과 같다:

  • 200 (OK)
  • 201 (Created)
  • 202 (Accepted)
  • 204 (No Content)
  • 301 (Moved Permanently)

REST API 활용 예시 - GET

GET 요청은 REST 에서 정보나 리소스를 가지고 올 때만 사용하라고 제시된다.

즉, 서버에 기록된 데이터나 리소스를 변경할 때 사용해서는 안된다.

이처럼 기존 리소스에 대한 변경을 하지 않고 가져오는 역할만 하기 때문에 '안전한' 메소드라고도 볼 수 있으며,

하나의 GET 요청은 매번 동일한 결과를 나타내야 한다 (서버의 리소스가 변경되지 않았다는 가정하에).

 

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를 이용한 실습을 해보도록 하겠다.