과제
- HTTP 헤더에 부분에 Connection 키라는 값 중 Keep-alive라는 옵션이 있음. 이것이 무엇인지 http를 사용하는데 대한 역할과 어떤 상황에서 사용되는지 알아보기
- JSON 파일에 대해 간략히 알아보고 Python으로 json 파일을 Read, write 할 수 있는 코드 제출하기 (json 파일에 대한 스터디 자료도 제출)
1. Keep-alive
<!-- HTTP 프로토콜을 사용하여 웹 서버로부터 "index.html" 문서를 요청하는 GET 요청의 예시 -->
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/92.0.4515.107 Safari/537.36
Accept: text/html,application/xhtml+xml,image/png
Connection: keep-alive
HTTP/1.1
HTTP 프로토콜은 기본적으로 상태를 유지하지 않는 Stateless이다. 각각의 요청과 응답은 독립적으로 처리되고 이전 요청이나 응답과의 연결이 없다. 웹 서버가 클라이언트의 상태를 기억하지 않고 각각의 요청을 독립적으로 처리하는 방식이다.
하지만 이러한 상태를 유지하지 않는 특성 때문에 동일한 클라이언트가 여러 요청을 보낼 때 매번 새로운 연결을 만들어야 된다. 이는 요청과 응답 간의 연결을 계속 유지하는 것은 불필요한 오버헤드가 발생할 수 있다. 이를 해결하기 위해 HTTP/1.1에서는 'Connection: keep-alive' 헤더를 사용하여 연결을 유지할 수 있다.
Keep-Alive 옵션
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/92.0.4515.107 Safari/537.36
Accept: text/html,application/xhtml+xml,image/png
Connection: keep-alive
Keep-Alive: timeout=5, max=1000
Keep-Alive 파라미터를 이용하여 특정시간, 최대 요청을 제한할 수 있다.
- timeout: 유휴 연결이 계속 열려 있어야 하는 최소한의 시간(초 단위)
- max: 연결이 닫히기 이전에 전송될 수 있는 최대 요청 수
2. JSON
JSON(JavaScript Object Notation) 은 데이터 교환을 위한 경량의 데이터 형식으로 주로 서버와 클라이언트 간의 데이터 교환에 사용된다.
JSON 특징
- JSON은 자바스크립트를 확장하여 만들어졌습니다.
- JSON은 자바스크립트 객체 표기법을 따릅니다.
- JSON은 사람과 기계가 모두 읽기 편하도록 고안되었습니다.
- JSON은 프로그래밍 언어와 운영체제에 독립적입니다.
Python과 JSON
Python에서 JSON 데이터를 가공하려면 내장된 json 모듈을 사용하면 된다. 이를 사용하여 JSON 데이터를 파싱하고 생성할 수 있다.
json.loads()
JSON 문자열을 python 데이터로 변경하기
import json
str = '{"name":"lee", "age": 20, "country": "KOREA"}'
data = json.loads(str)
print(data) # {'name': 'lee', 'age': 20, 'country': 'KOREA'}
print(type(data)) # <class 'dict'>
json.dumps()
python 데이터를 JSON 문자열로 변경하기
import json
str = {"name":"lee", "age": 20, "country": "KOREA"}
data = json.dumps(str)
print(data) # {"name": "lee", "age": 20, "country": "KOREA"}
print(type(data)) # <class 'str'>
json.dump()
JSON 데이터 쓰기
import json
str = {"name":"lee", "age": 20, "country": "KOREA"}
with open("data.json", "w") as json_file:
json.dump(str, json_file)
json.load()
JSON 데이터 읽기
import json
with open("data.json", "r") as json_file:
data = json.load(json_file)
print(data) # {'name': 'lee', 'age': 20, 'country': 'KOREA'}
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프런트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.