REST의 등장 배경
HTTP는 GET, POST, PUT, DELETE 등의 다양한 HTTP 메소드를 지원
실제로는 서버가 각 메소드의 기본 설명을 따르지 않아도 프로그램 개발 가능
하지만 저마다 다른 방식으로 개발하면 문제가 될 수 있어 기준이 되는 아키텍처가 필요
REST(Representational State Transfer)
각 자원(Resource)에 대하여 자원의 상태에 대한 정보를 주고받는 개발 방식
자원, 행위, 표현의 형태로 데이터를 주고 받자고 약속을 한 것임
페이로드(payload) : 데이터를 전송할 때, 헤더와 메타데이터, 에러 체크 비트 등과 같은 다양한 요소들을 함께 보내어, 데이터 전송의 효율과 안정성을 높히게 되는데 이 때, 보내고자 하는 데이터 자체를 의미하는 것
ex) json에서 보면 payload는 data가 된다
{
"status" :
"from": "localhost",
"to": "http://melonicedlatte.com/chatroom/1",
"method": "GET",
"data":{ "message" : "There is a cutty dog!" }
}
API
프로그램이 상호작용하기 위한 인터페이스
S/W가 다른 S/W로 부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단
REST API
REST 아키텍처를 따르는 API
HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자들 사이에 널리 지켜지는 약속
형식이기 때문에 기술에 구애X
REST API 호출 : REST 방식을 따르고 있는 서버에 특정한 요청을 전송 하는것을 의미
REST 구조를 설정했으면 데이터를 주고받을 때 어떠한 형식으로 주고받을지 정해야함 => JSON
JSON (JavaScript Object Notation)
데이터를 주고받는데 사용하는 경량의 데이터 형식
key, value 쌍으로 이루어진 데이터 객체를 저장
import json
user = {'id' : 'jiwon',
'password' : '1234asdf',
'age' : 26,
'hobby' : ['programming', 'music']
}
json_data = json.dumps(user,indent=4)
print(json_data)
{
"id": "jiwon",
"password": "1234asdf",
"age": 26,
"hobby": [
"programming",
"music"
]
}
Ex) REST API 호출하여 회원 정보를 처리하는 예제
import requests
#REST API 경로에 접속하여 응답 데이터 받아오기(GET)
target = 'https://jsonplaceholder.typicode.com/users'
response = requests.get(url=target)
# 응답이 json 형식이여서 파이썬 객체로 변환
data = response.json()
# dictionary 형태이기 때문에 이름 정보만 꺼내기 위해 key를 name으로
name_list = []
for user in data:
name_list.append(user['name'])
print(name_list)
'CS' 카테고리의 다른 글
JavaScript 기본 지식 (0) | 2022.09.02 |
---|---|
CSS 기본 지식 (0) | 2022.07.05 |
리눅스 Git 설치 밎 사용법 (1) | 2022.01.21 |
.gitignore을 이용하여 commit하기 (0) | 2022.01.11 |
동시성(Concurrency)와 병렬성(Parallelism) (0) | 2021.12.28 |