我有一个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只需要两个参数.

我需要到达以下标题信息将被添加的点

'Authorization:Token token="xxxxxxxxxxxxxxxxxxxxxx"'

这种类型的头在curl 中可以正常工作.在Python 3和请求中如何实现这一点?

推荐答案

patch取kwargs,只需传递头={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)

Python-3.x相关问答推荐

将Trio与基于线程的事件侦听器混合使用

Python将类实例变量转换为嵌套 struct

将数据帧扩展为矩阵索引

While循环不停止地等待,直到时间.睡眠结束

当条件第一次出现时将行标记为True,如果按顺序重复则标记为False

在 sum() 中将字符串转换为 int (或 float)

当我在正则表达式末尾使用斜杠时,为什么会得到不同的结果?

Pandas教程:如何更新行内数值的位置

Python 3 - 给定未知数量的类别动态地将字典嵌套到列表中

Python Regex 查找给定字符串是否遵循交替元音、辅音或辅音、元音的连续模式

Pandas 按值和索引对 DF 进行排序

如何在python 3.10中将列表项(字符串类型)转换为模块函数

为什么 List 不能包含多种类型?

Visual Studio Code 中的 Python 3.x 类型提示

try 注释散列变量时,ABCMeta对象不可下标

类方法和实例方法同名

混合全局/参数和名为top的函数的奇怪python行为

从 IPython 重新加载 Python 扩展模块

如何将python日志(log)级别名称转换为整数代码

在 Visual Studio Code 中调试 Scrapy 项目