Как реализовать простые POST, GET и DELETE в python

Краткая версия: могу ли я просто использовать модуль «Запросы» для POST, GET и DELETE?

Я пытаюсь использовать API REST Pinterest. (Pinterest API Explorer)

Я иду простым путем и просто вручную получил свой токен аутентификации через oauth, поэтому в основном все, что мне нужно знать, это POST, GET и DELETE для определенного URL-адреса, а также включить параметры, а затем вернуть json.

Мне действительно нужны только три функции API: список авторизованных подписчиков пользователя (GET), подписка на пользователя (POST) и отмена подписки на пользователя (DELETE). Единственный параметр, который мне нужен для любого из них, — это мой access_token, который я получил вручную.

Кажется, что это простая проблема, но есть около 5 оберток Python Pinterest API, ни одна из них не завершена, некоторые из них вообще не работают. Я просмотрел модули pycurl, httplib и request. Все они выглядят так, как будто у них есть достаточно простой метод для GET, но он усложняется с POST и, возможно, DELETE. Кажется, что это должно быть очень просто, функция, которая принимает метод (POST/GET/DELETE/и т. д.), URL-адрес и набор параметров, так почему же это сложнее? Если бы это было так просто, я не понимаю, почему все эти API-обертки были бы наполовину сделаны, поскольку теоретически это должно быть так же просто, как вызов функции с этими 3 параметрами (с массивом для 3-го параметра) для каждой функции в API .

В пакете Python Requests есть эта функция в классе 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», «Удалить» или что угодно.

Если вы хотите делать более сложные запросы, ознакомьтесь с этим руководством для Библиотека https://pypi.python.org/pypi/httplib2 — стоит прочитать.

person Maurice    schedule 27.10.2016