반응형
* 본 포스팅은 나동빈 - 이코테 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 호출 경로 : https://jsonplaceholder.typicode.com/users/1
- HTTP 메서드 : GET
확인해보면 api 호출 경로는 그 자원 값이 users로 명시되어 있는 걸 확인할 수 있다.
REST API는 uri에 자기가 접근하고자 하는 데이터를 기입할 수 있다. 즉 우리가 사용자 데이터에 접근하고자 한다면 이처럼 users에 접근해서 메서드를 호출할 수 있다. 이때 유저 id와 같은 정보 또한 uri에 같이 기록할 수 있다.
uri는 자원을 명시하기 때문에 사용자 중에서 1번 사용자라는 의미를 명시하기 위해서 뒤쪽에 숫자를 같이 넣어주는 방식을 이용한다. 물론 실제 REST API를 구현할 때는 단순히 모든 사람들한테 이러한 데이터의 조회 권한을 줄 수 없기 때문에 api를 호출할 때 별도의 인증용 토큰을 같이 보내도록 만들어서 적절한 권한이 있는 사용자 일 때 데이터에 접근해서 조회할 수 있도록 하는 경우가 많다.
- API 호출 경로 : https://jsonplaceholder.typicode.com/users
- HTTP 메서드 : GET
■ 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)
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] 1000단위로 ,(콤마) 찍기 (0) | 2023.03.09 |
---|---|
[JavaScript] Template literals(`백틱) 그리고 JSP (0) | 2023.02.22 |
[JavaScript] 2020년도 지방기능경기대회 과제(웹디자인 및 개발) 공부하기4 (0) | 2023.01.27 |
[JavaScript] 2020년도 지방기능경기대회 과제(웹디자인 및 개발) 공부하기3 (0) | 2023.01.26 |
[JavaScript] 2020년도 지방기능경기대회 과제(웹디자인 및 개발) 공부하기2 (0) | 2023.01.20 |
댓글