如何解析 REST 服务的 POST 参数?

2023-12-29

看来我还有另一个 JSON 问题,这次是在发布到 REST 服务时。 我在用Flask-Restful.

api.add_resource(Records, '/rest/records/<string:email>/<string:password>/<string:last_sync_date>')

parser = reqparse.RequestParser()
parser.add_argument('record_date', type=str)
parser.add_argument('records', type=str)
parser.add_argument('rating', type=str)
parser.add_argument('notes', type=str)

class Records(Resource):
    def post(self, email, password, last_sync_date):
        args = parser.parse_args()
        records = args['records'] # 'records' = None, but why? 
        return records, 201

单元测试:

resource_fields = {
            'record_date': fields.String,
            'rating': fields.Integer,
            'notes': fields.String,
            'last_updated': fields.DateTime,
        }
records = {"records":[]}
records["records"].append(marshal(record1, resource_fields))
    rv = self.app.post('/rest/records/{0}/{1}/{2}'.format(email, password, sync_date), data=json.dumps(records))

json.dumps(记录)是:

str: {"records": [{"rating": 1, "notes": null, "last_updated": "Tue, 15 Oct 2013 15:52:44 -0000", "record_date": "2013-10-15 15:52:44.746815"}]}

Why is args['records']没有,我清楚地通过电线发送到哪里?

UPDATE:

奇怪的是,当我发送一个对象时,它都是花花公子的。这么奇怪:

record = dict(record_date=record1.record_date, rating=record1.rating, notes=record1.notes, last_updated=record1.last_updated)

rv = self.app.post('/rest/records/{0}/{1}/{2}'.format(email, password, sync_date), data=record)

args:

{'records': None, 'notes': None, 'task': None, 'record_date': '2013-10-15 16:48:40.662744', 'rating': '1'}

我最终在flask-restful github上将此作为一个问题提出,并得到了这个对我有用的解决方案。这要归功于道格·布莱克。

reqparse 并不真正知道如何处理 JSON。要处理 JSON 帖子,您需要使用flask.request.json 字典。

这是您可能想要的更新示例:

from flask import Flask, request
from flask.ext import restful

class Records(restful.Resource):
    def post(self, email, password, last_sync_date):
        records = request.json['records']
        return records, 201

app = Flask(__name__)
api = restful.Api(app)
api.add_resource(
    Records, 
    '/rest/records/<string:email>/<string:password>/<string:last_sync_date>'
)

request.json 上的文档在这里。

您需要确保将内容类型标头设置为 application/json 进行发布,以便 Flask 知道填充 json 字典。

self.app.post(
    '/rest/records/{0}/{1}/{2}'.format(email, password, sync_date), 
    data=json.dumps(records), 
    headers={'Content-Type': 'application/json'
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解析 REST 服务的 POST 参数? 的相关文章

  • ca 证书 Mac OS X

    我需要在emacs 上安装offlineimap 和mu4e 问题是配置 当我运行 Offlineimap 时 我得到 OfflineIMAP 6 5 5 Licensed under the GNU GPL v2 v2 or any la
  • 如何让python优雅地失败?

    我只是想知道如何让 python 在所有可能的错误中以用户定义的方式失败 例如 我正在编写一个处理 大 项目列表的程序 并且某些项目可能不符合我定义的格式 如果 python 检测到错误 它目前只会输出一条丑陋的错误消息并停止整个过程 但是
  • 组和平均 NumPy 矩阵

    假设我有一个任意的 numpy 矩阵 如下所示 arr 6 0 12 0 1 0 7 0 9 0 1 0 8 0 7 0 1 0 4 0 3 0 2 0 6 0 1 0 2 0 2 0 5 0 2 0 9 0 4 0 3 0 2 0 1 0
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • Paramiko SSHException 通道已关闭

    我一直在使用 Paramiko 在 Linux Windows 机器上发送命令 它可以很好地在 Ubuntu 机器上远程执行测试 但是 它不适用于 Windows 7 主机 以下是我收到的错误 def unit for event self
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • 通用详细视图 ProfileView 必须使用对象 pk 或 slug 调用

    我是 Django 2 0 的新手 在访问我的个人资料页面视图时收到此错误 它适用于像这样的网址path users
  • 如何在Python代码中查找列号

    简短问题 当按上述方式调用函数时 我可以找到行号here https stackoverflow com questions 3056048 filename and line number of python script 同样 如何找到
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • Django 模型字段默认基于另一个模型字段

    我使用 Django Admin 构建一个管理站点 有两张表 一张是ModelA其中有数据 另一个是ModelB里面什么也没有 如果一个模型字段b b in ModelB为None 可以显示在网页上 值为ModelA的场a b 我不知道该怎
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 将列表中的 None 替换为最左边的非 none 值

    Given a None 1 2 3 None 4 None None I d like a None 1 2 3 3 4 4 4 目前我已经用以下方法强制它 def replaceNoneWithLeftmost val last Non
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • 在 matplotlib 中绘制多边形的并集[重复]

    这个问题在这里已经有答案了 我正在尝试绘制几个多边形的并集matplotlib 具有一定的 alpha 水平 我当前的代码在交叉点处颜色较深 有没有办法让交叉路口与其他地方的颜色相同 import matplotlib pyplot as
  • python dicttoxml 多次使用相同的键

    我正在尝试做如下所示的 xml
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet

随机推荐

  • Instagram API 媒体/搜索端点不尊重 max_timestamp 参数

    根据 Instagram API 文档 添加一个max timestamp调用的参数 media search端点应该只返回时间戳小于的结果max timestamp http instagram com developer endpoin
  • 学习C,需要“Greedy”CS50解决方案的一些帮助

    我对 C 很陌生 我有 python 背景 我想知道我的代码哪里出了问题 我正在做cs50贪心问题 我的代码有什么问题吗 它适用于某些数字 但其他数字则不起作用 我试图从用户那里获取输入 询问要回馈多少零钱 然后计算我可以仅使用 25 10
  • 使用 Bundler 和 Rails 4 将开发精华从生产中移除

    Problem 我们部署的应用程序具有开发依赖项 我们有很多开发依赖 这会增加生产中的工件大小和内存消耗 因为所有这些依赖项都是require d 大多数实例都部署在云中 因此更大的实例更多的内存 更多的钱 我们希望减少大小 内存 并在已部
  • Bootstrap 中心垂直和水平对齐

    我有一个页面 其中仅存在表单 并且我希望将表单放置在屏幕中央 div class container div class row justify content center align items center div div
  • 为什么这种隐式转换的使用不起作用?

    我定义了一个通用类 Lazy
  • 使用 PreferenceActivity 时刷新首选项视图

    我试图强迫PreferenceActivity刷新 有谁知道如何做到这一点 我有一个ResetDefaultsPreference子类的类Preference并且 当单击时 应该将其键以特定前缀开头的所有首选项重置为默认值 它有效 但是当我
  • iOS - 尝试播放 mp3 文件失败

    我正在尝试播放从我的应用程序的服务器检索的 mp3 文件 执行以下操作 IBAction play UIButton sender dispatch queue t downloadQueue dispatch queue create a
  • 使用 Python 将 .csv 文件分成块

    我有一个超过 300 GB 的大型 csv 文件 我想将其分成每个 100 000 000 行的较小文件 每行大约有 55 60 字节 我写了以下代码 import pandas as pd df pd read csv path to r
  • 模态视图控制器和 DefinePresentationContext 的问题

    我使用以下命令创建了一个自定义容器视图控制器新的 UIViewController 容器视图控制器方法 http developer apple com library ios documentation uikit reference U
  • Google Analytics 上是否有设置禁止尚未同意的用户使用 cookie

    根据欧盟电子隐私指令 又名 Cookie 法 第 5 3 条 针对欧盟用户的网站在设置 Cookie 之前必须获得用户的选择同意 See ICO 指导 http www ico gov uk media documents library
  • 在 R Shiny Dashboard 中的反应函数中返回数据帧

    使用闪亮的仪表板 ui r server r 和多个包含函数的 r 脚本 基本问题是 我有两个数据集带入 server r 中 并将它们传递给准备 清理数据集的函数 然后将它们绑定在一起并应返回完整的数据帧 数据帧应该是反应性的 这是我到目
  • python scipy/numpy 中的多项式 pmf

    scipy numpy 中是否有内置函数用于获取多项式的 PMF 我不确定是否binom以正确的方式概括 例如 Attempt to define multinomial with n 10 p 0 1 0 1 0 8 rv scipy s
  • rustup 将自身安装到哪里?

    我明白那个rustup安装rustc and cargo二进制文件到 cargo bin 但是它安装在哪里rustup可执行到 据我所知 任何文档中都没有对此进行解释 并且运行安装程序也不会告诉您 如果可能的话 我想避免将其安装到除我的主目
  • ASP.NET 代码块(例如 <%= %>)在页面生命周期中何时执行?

    当我对整个页面进行数据绑定时 我会执行以下操作 巴拉巴拉 这效果很好 但是 我通常不会对整个页面使用数据绑定 而是以 经典 ASP NET 方式编写内容 例如 在后面的代码中我将有类似的内容 lblSomeMessage Text Some
  • 在表单的 clean 方法期间读取文件数据

    所以 我正在努力实现答案我之前的问题 https stackoverflow com questions 2798670 processing file uploads before object is saved 这是我的模型 class
  • Visual Studio 2010 警告:未指定的错误(HRESULT 异常:0x80004005 (E_FAIL))

    我看到很多关于此错误的帖子 但似乎都与我的情况无关 我有一个小型解决方案 包含 2 个 winforms 应用程序和一个数据访问 DLL 我使用的是 VS2010 SP1 当我在 Vista Business 32 位 SP1 笔记本电脑上
  • 如何使用引导网格映射图像数组?

    我正在使用 gatsby js 构建一个投资组合网站 所有照片都发布在 WordPress 中 由 graphQL 获取并渲染到网站 我正在尝试使用 bootstrap grid 来组织照片并使其响应 但是因为 graphQL 返回一个数组
  • 为整个应用程序创建一个公共对象

    我创建了一项活动 用于创建用户个人资料并存储其信息 例如姓名 ID 个人资料图片等 该信息是唯一的 应该在应用程序的所有活动中使用 我想知道创建一个存储所有信息并在所有活动中使用它的通用对象的最佳方法是什么 我已阅读有关捆绑包和 JSON
  • Python - 使用 SAML 2.0 登录站点

    我很难找到资源来帮助我解决我遇到的问题 我有一个使用 SAML 2 0 保护的网站 有人可以向我指出显示如何使用 SAML 2 0 登录站点的资源吗 大多数 python 模块似乎都与实现 SAML 2 有关 我只需要登录到实现 SAML
  • 如何解析 REST 服务的 POST 参数?

    看来我还有另一个 JSON 问题 这次是在发布到 REST 服务时 我在用Flask Restful api add resource Records rest records