web-dev-qa-db-ja.com

リクエストを使用してヘッダー付きのPATCHリクエストを送信する方法

私はRails 4アプリケーションを使用しており、APIにトークンベースの認証を使用しており、Python 3スクリプトを介してレコードを更新できる必要があります。

私の現在のスクリプトは次のようになります

import requests
import json

url = 'http://0.0.0.0:3000/api/v1/update_experiment.json'
payload = {'expt_name' : 'A60E001', 'status' : 'done' }

r = requests.patch(url, payload)

aPI認証を無効にしても問題ありません。

ヘッダーを追加する方法がわかりません、requests.patchは、ドキュメントによると2つのパラメータのみを受け取ります。

次のヘッダー情報が追加されるポイントに到達する必要があります

'Authorization:Token token="xxxxxxxxxxxxxxxxxxxxxx"'

このタイプのヘッダーは、curlで問題なく動作します。 Python 3とリクエストでこれをどのように行うことができますか?

11
Bart C

patch kwargsを取り、headers = {your_header}を渡すだけです:

def patch(url, data=None, **kwargs):
    """Sends a PATCH request.

    :param url: URL for the new :class:`Request` object.
    :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    :return: :class:`Response <Response>` object
    :rtype: requests.Response
    """

    return request('patch', url,  data=data, **kwargs)

次のようなもの:

head = {"Authorization":"Token token=xxxxxxxxxxxxxxxxxxxxxx"}
url = 'http://0.0.0.0:3000/api/v1/update_experiment.json'
payload = {'expt_name' : 'A60E001', 'status' : 'done' }

r = requests.patch(url, payload, headers=head)
12