ฉันได้เขียนฟังก์ชันสั้น ๆ ใน Python3 เพื่อแยกวิเคราะห์ส่วนหัว HTTP ฉันสงสัยว่าจะมีใครสามารถดูมันได้หรือไม่ และบอกฉันว่ามีอะไรที่ฉันสามารถทำได้แตกต่างออกไปเพื่อทำให้โค้ดดีขึ้นหรือไม่ สิ่งที่ฉันสร้างผลลัพธ์ที่ต้องการในปัจจุบัน แต่ฉันไม่แน่ใจว่าจะมีสถานการณ์ใดที่โค้ดนี้จะไม่ให้ผลลัพธ์ที่ต้องการหรือไม่
นี่คือสิ่งที่ฉันมี:
def _parse_headers(self, headers):
lines = headers.split("\r\n")
info = lines[0].split(" ")
method = None
path = None
protocol = None
headers = {}
if len(info) > 0:
method = info[0]
if len(info) > 1:
path = info[1]
if len(info) > 2:
protocol = info[2]
for line in lines[1:]:
if line:
parts = line.split(":")
key = None
value = None
if len(parts) > 0:
key = parts[0]
if len(parts) > 1:
value = parts[1]
if not key is None and not value is None:
headers[key.strip().upper()] = value.strip()
return {
"method": method,
"path": path,
"protocol": protocol,
"headers": headers
}
:
ได้อย่างถูกต้อง นอกจากนี้ยังมีปัญหาการรับรู้เฉพาะตัวแบ่งบรรทัด\r\n
แม้ว่าตัวแบ่งบรรทัด\n
จะไม่สอดคล้องกันอย่างเคร่งครัด แต่คุณควรยอมรับหรือปฏิเสธอย่างชัดเจน - person Dietrich Epp   schedule 11.09.2014if
สามอันนั้นด้วยแฮ็กนี้:method, path, protocol = (info + 3*[None])[:3]
แต่ เป็น การแฮ็ก :) - person PM 2Ring   schedule 12.09.2014