中级
实现ETag缓存验证
未完成
中级参考
代码结构已给出,请填写 ____ 处
def solve():
from pyodide.http import open_url
from io import StringIO
etag_records_csv = open_url(____).read()
products_csv = open_url(____).read()
import pandas as pd, hashlib, json
from io import StringIO
etags = pd.read_csv(StringIO(____))
products = pd.read_csv(StringIO(____))
def generate_etag(____):
content = json.dumps(____)
h = hashlib.sha256(content.encode()).hexdigest()[:____]
return f'____'
def handle_get(____):
if resource_type == '____':
row = products[products['____']==resource_id]
if row.empty: return ____, None, None
data = row.iloc[____][['____','____','____','____']].to_dict()
else:
data = {'____': resource_id}
etag = generate_etag(____)
if if_none_match and if_none_match == etag:
return ____, etag, None
return ____, etag, data
print(____)
for pid in [____, ____, ____]:
code, etag, data = handle_get(____)
print(____)
code2, etag2, data2 = handle_get(____)
print(____)
print(____)
示例
输入
solve()
期望输出
ETag缓存验证: GET product/1: 200, ETag="c881640da70fec33" GET product/1 (If-None-Match): 304, body=none GET product/3: 200, ETag="b85f530ff2667d53" GET product/3 (If-None-Match): 304, body=none GET product/5: 200, ETag="4d0eae0937a6c554" GET product/5 (If-None-Match): 304, body=none 记录的ETag条目: 10
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199