본문 바로가기
JavaScript

REST API 개념과 예제

by 딩박사 2023. 2. 24.
반응형

* 본 포스팅은 나동빈 - 이코테 2021 강의 몰아보기 에서 학습한 내용을 포스팅합니다.


출처

동빈나 이코테

 

 

■ 서버와 클라이언트

  • 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)한다.

 

 

■ 클라이언트(Client) = 고객

  • 서버로 요청(Request)을 보내고 응답(Response)이 도착할 때까지 기다린다.
  • 서버로부터 응답을 받은 뒤에는 서버의 응답을 화면에 출력한다.
    • 예시 1) 웹 브라우저 : 서버로부터 받은 HTML, CSS 코드를 화면에 적절한 형태로 출력한다.
    • 예시 2) 게임 앱 : 서버로부터 받은 경험치, 친구 귓속말 정보 등을 화면에 적절한 형태로 출력한다.

 

■ 서버(Server) = 서비스 제공자

  • 클라이언트로부터 받은 요청(Request)을 처리해 응답(Response)을 전송한다.
    • 예시) 웹 서버 : 로그인 요청을 받아 아이디와 비밀번호가 정확한지 검사하고 그 결과를 응답한다.

 

 


 

■ HTTP

  • HTTP(HyperText Transfer Protocol)웹상에서 데이터를 주고받기 위한 프로토콜을 의미
    • 보통은 웹 문서(HTML 파일)를 주고받는 데 사용된다.
    • 모바일 앱 및 게임 개발 등에서 특정 형식의 데이터를 주고받는 용도로 사용된다.
  • 클라이언트는 요청의 목적에 따라서 적절한 HTTP 메서드를 이용해 통신을 진행한다.
    • 대표적인 HTTP 메서드는 다음과 같다.
HTTP 메서드 설명 사용 예시
GET 특정한 데이터의 조회를 요청한다 특정 페이지 접속, 정보 검색
POST 특정한 데이터의 생성을 요청한다 회원가입, 글쓰기
PUT 특정한 데이터의 수정을 요청한다 회원 정보 수정
DELETE 특정한 데이터의 삭제를 요청한다 회원 정보 삭제

 

 

■ 파이썬 웹 요청 예제: GET 방식

import requests

target = "http://google.com"
response = requests.get(url=target)
print(response.text)

 


 

■ REST의 등장 배경

  • HTTP는 GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 지원한다.
    • 실제로는 서버가 각 메서드의 기본 설명을 따르지 않아도 프로그램을 개발할 수 있다.
    • 하지만 저마다 다른 방식으로 개발하면 문제가 될 수 있어 기준이 되는 아키텍처가 필요하다.

 

 

■ REST 개요

  • REST(Representational State Transfer)는 각 자원(Resouce)에 대하여 자원의 상태에 대한 정보를 주고받는 개발 방식을 의미
  • REST의 구성 요소
    • 자원(Resource) : URI를 이용
    • 행위(Verb) : HTTP 메서드를 이용
    • 표현(Representations) : 페이로드를 이용

 

 

■ REST API란?

  • API(Application Programming Interface) : 프로그램이 상호작용하기 위한 인터페이스를 의미
  • REST API : REST 아키텍처를 따르는 API를 의미
  • REST API 호출 : REST 방식을 따르고 있는 서버에 특정한 요청을 전송하는 것을 의미

 

REST API를 이용해서 데이터를 주고 받도록 설계를 했다면 데이터를 주고받을 때 어떠한 형식으로 데이터를 주고받을지 명시할 필요가 있다. 바로 여기서 json 포맷이 사용된다.

 

■ JSON

  • JSON(JavaScript Object Notation) : 데이터를 주고받는 데 사용하는 경량의 데이터 형식
  • JSON 형식을 따르는 데이터 예시
{
    "id": "gildong123",
    "password": "1!2@3#4$",
    "age": 30,
    "hobby": ["football", "programming"]
}
  • JSON 데이터는 키와 값의 쌍으로 이루어진 데이터를 객체에 저장한다.

 

 

■ JSON 객체 사용 예제

import json

# 사전 자료형(dict) 데이터 선언
user = {
    "id": "gildong123",
    "password": "1!2@3#4$",
    "age": 30,
    "hobby": ["football", "programming"]
}

# 파이썬 변수를 JSON 객체로 변환
json_data = json.dumps(user, indent=4)
print(json_data)

 

■ JSON 객체 사용 예제

import json

# 사전 자료형(dict) 데이터 선언
user = {
    "id": "gildong123",
    "password": "1!2@3#4$",
    "age": 30,
    "hobby": ["football", "programming"]
}

# JSON 데이터로 변환하여 파일로 저장
with open("user.json", "w", encoding="utf-8") as file:
    json_data = json.dump(user, file, indent=4)

 


 

REST API 연습용 서비스
목킹(Mocking) 이란 어떠한 기능이 있는 것처럼 흉내내어 구현한 것을 의미
가상의 REST API 제공 서비스 : https://jsonplaceholder.typicode.com/

 

■ REST API 호출 실습

확인해보면 api 호출 경로는 그 자원 값이 users로 명시되어 있는 걸 확인할 수 있다.
REST API는 uri에 자기가 접근하고자 하는 데이터를 기입할 수 있다. 즉 우리가 사용자 데이터에 접근하고자 한다면 이처럼 users에 접근해서 메서드를 호출할 수 있다. 이때 유저 id와 같은 정보 또한 uri에 같이 기록할 수 있다.
uri는 자원을 명시하기 때문에 사용자 중에서 1번 사용자라는 의미를 명시하기 위해서 뒤쪽에 숫자를 같이 넣어주는 방식을 이용한다. 물론 실제 REST API를 구현할 때는 단순히 모든 사람들한테 이러한 데이터의 조회 권한을 줄 수 없기 때문에 api를 호출할 때 별도의 인증용 토큰을 같이 보내도록 만들어서 적절한 권한이 있는 사용자 일 때 데이터에 접근해서 조회할 수 있도록 하는 경우가 많다.

 

 

■ REST API를 호출하여 회원 정보를 처리하는 예제

import requests

# REST API 경로에 접속하여 응답(Response) 데이터 받아오기
target = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url=target)

# 응답(Response) 데이터가 JSON 형식이므로 바로 파이썬 객체로 변환
data = response.json()

# 모든 사용자(user) 정보를 확인하며 이름 정보만 삽입
name_list = []
for user in data:
    name_list.append(user['name'])
    
print(name_list)

 

반응형

댓글