วิธีการใช้งาน POST, GET และ DELETE อย่างง่ายใน python

เวอร์ชันสั้น: ฉันสามารถใช้โมดูลคำขอสำหรับ POST, GET และ DELETE ได้หรือไม่

ฉันกำลังพยายามใช้ Pinterest REST API (Pinterest API Explorer)

ฉันกำลังใช้เส้นทางง่ายๆ และเพิ่งรับโทเค็นการรับรองความถูกต้องด้วยตนเองผ่าน oauth ดังนั้นโดยพื้นฐานแล้วสิ่งที่ฉันต้องรู้คือต้องทำอย่างไรคือ POST, GET และ DELETE ไปยัง URL ที่ระบุและรวมพารามิเตอร์ด้วย จากนั้นส่งคืน json

ฉันต้องการเพียงสามฟังก์ชัน API เท่านั้น แสดงรายการผู้ติดตามผู้ใช้ที่ได้รับอนุญาต (GET) ติดตามผู้ใช้ (POST) และเลิกติดตามผู้ใช้ (DELETE) พารามิเตอร์เดียวที่ฉันต้องการสำหรับสิ่งเหล่านั้นคือ access_token ที่ฉันได้รับด้วยตนเอง

ดูเหมือนจะเป็นปัญหาง่ายๆ แต่มี wrappers Pinterest API ของ python ประมาณ 5 ตัว ไม่มีอันใดที่เสร็จสมบูรณ์ และบางอันก็ใช้งานไม่ได้เลย ฉันได้ดูโมดูล pycurl, httplib และคำขอแล้ว ดูเหมือนว่าพวกเขาจะมีวิธีที่ง่ายเพียงพอสำหรับ GET แต่จะซับซ้อนมากขึ้นเมื่อใช้ POST และอาจถึง DELETE ดูเหมือนว่ามันควรจะเรียบง่ายสุดๆ เป็นฟังก์ชันที่รับเมธอด (POST/GET/DELETE/อื่นๆ) URL และชุดพารามิเตอร์ แล้วทำไมมันถึงซับซ้อนกว่านี้ล่ะ? ถ้ามันง่ายขนาดนั้น ฉันก็ไม่เข้าใจว่าทำไม wrappers API ทั้งหมดถึงเสร็จไปครึ่งหนึ่ง เนื่องจากในทางทฤษฎีแล้วมันควรจะง่ายพอ ๆ กับการเรียกใช้ฟังก์ชันด้วยพารามิเตอร์ 3 ตัวนั้น (พร้อมอาร์เรย์สำหรับพารามิเตอร์ตัวที่ 3) สำหรับทุกฟังก์ชันใน API .

ในแพ็คเกจ Requests python มีฟังก์ชันนี้ภายใต้คลาส RequestMethods: def request(self, method, url, fields=None, headers=None, **urlopen_kw)

ดูเหมือนว่าฉันเข้าใจทุกอย่างยกเว้นส่วนหัวและ **urlopen_kw แต่ฉันคิดว่ามันควรจะทำงานได้โดยไม่ต้องใช้ตัวแปรใช่ไหม

ฉันจะขอบคุณถ้ามีคนชี้ฉันไปในทิศทางที่ถูกต้อง


person Lightja    schedule 27.10.2016    source แหล่งที่มา
comment
คำตอบสำหรับฉบับย่อ: ใช่   -  person Klaus D.    schedule 27.10.2016


คำตอบ (1)


จากเอกสาร:

นี่คือตัวอย่างการดำเนินการคำขอ PUT โดยใช้ Request:

import urllib.request
DATA = b'some data'
req = urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT')
with urllib.request.urlopen(req) as f:
    pass
print(f.status)
print(f.reason)

ในกรณีของคุณ วิธีการจะเป็น 'POST', 'Delete' หรืออะไรก็ได้ที่คุณต้องการ

หากคุณต้องการส่งคำขอที่ซับซ้อนมากขึ้น โปรดดูคำแนะนำนี้สำหรับ ไลบรารี https://pypi.python.org/pypi/httplib2 - น่าอ่าน

person Maurice    schedule 27.10.2016