- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有以下相关代码的 Python Eve 应用程序:
def handle_user_update(request, lookup):
if request and request.data:
data = json.loads(request.data)
users = app.data.driver.db['users']
user = users.find_one(ObjectId(lookup['_id']))
if user and user['activation_code'] == data['activation_code']:
app.data.update('users', ObjectId(lookup['_id']), {'active':True})
else:
abort(403)
app = Eve()
if __name__ == '__main__':
app.on_pre_PATCH_users += handle_user_update
app.run(host='0.0.0.0')
字段定义:
'active': {
'type': 'boolean',
'readonly': True,
'default': False
},
'activation_code': {
'type': 'string',
'readonly': True
}
我正在发送 PATCH 请求:
If-Match: c8f9351a7527f8aa1db191fe85017df1dbca961f
{"activation_code": "8f775627d1144dbd8367778e8680ed58"}
我从在此 PATCH 之前立即发送的 GET 请求的 ETag 中获得了 If-Match。 app.data.update 方法执行并按预期更新数据,但我收到响应 412 PRECONDITION FAILED。为什么?我应该怎么做才能获得 200 OK?
最佳答案
您的users
文档正在更新的原因是您将回调函数 Hook 到Pre-Request Event。 .每次收到请求时和在处理之前都会引发这些问题。在您的情况下,您可能希望将回调 Hook 到 Database Event .仅当请求已被验证和接受时才会引发数据库事件,紧接在将文档发送到数据库之前。在你的情况下,我会将我的函数挂接到 on_update
上,它在经过验证的 PATCH
请求时触发。如果原始请求将被拒绝,这样做会阻止您的代码对数据库执行操作,这是您可能不希望发生的事情。
关于为什么 412 PRECONDITION FAILED
被很好地提出的原因......在 PATCH
请求中,只有在 ETag 不匹配时才会返回,所以确保你提供了正确的一。还有你在哪个 Eve 版本?
更新在 v0.4 上,如果您 users
也是请求的目标,那么一旦您执行自定义写入(文档表示更改),ETag 就会更改,以便在您获得 时进行解释412
稍后。
关于 python 前夕 : 412 Precondition Failed on PATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27142276/
我是 Selenium 的新手,我正在尝试创建一个小型框架,我在其中登录一个应用程序,然后尝试验证帐户中的一些文本。 但是一旦我的脚本登录帐户,浏览器就会关闭,我无法验证文本字符串。 有人说是因为dr
我正在Xcode 11上构建SwiftUI应用程序,但是当我切换到应用程序中的特定选项卡时,它会立即终止。 问题是,它始终指向Application Delegate文件,我认为这并不是真正的问题。我
脚步: 接收 ViewModel 以更新或创建实体 如果存在,则尝试获取现有实体 调用 IMapper.map(viewModel, entity) 因为我正在为 map 提供目标值,所以是否可以检查
在阅读了一些关于集成管道的文档后,我对 IIS 如何确定何时运行托管模块、托管请求实际上是什么以及如何确定感到困惑,例如: http://www.iis.net/learn/application-f
为什么当警告级别处于 2 级或更高级别时,我会立即收到此琐碎代码示例的以下警告? public int Foo(int a) { if (a >= 0) throw new ArgumentE
据我了解,在更改某些对象状态之前,我们使用 Guava 先决条件快速失败(来自 stackoverflow 的一个很好的答案 here)。这很好。然而,它会抛出运行时异常,并且这不是应用程序用户最喜欢
我正在为类 ForeignCollection 编写反序列化程序,即 abstract ,并在 ORMLite Android Library 中提供给我.请参阅下面的代码。 public class
在我们的代码中,我们经常使用Preconditions 检查参数: Preconditions.checkArgument(expression, "1" + var + "3"); 但有时,这段代码
我正在尝试对类的成员函数返回的值使用@postcondition 装饰器,如下所示: def out_gt0(retval, inval): assert retval > 0, "Retur
我的应用程序运行良好,但由于我的操作系统 Debian 出现问题,我决定重新安装它并选择安装 Ubuntu-16.04 而不是最后一个 Debian。现在一切正常。 问题是我的 android 应用程
在我的项目中,我们使用 voltdb 作为数据库,我们使用 liquibase 来管理版本等。我们在一个文件中编写变更集,为 voltdb 我们使用 RunAlways.xml 包含以下步骤的文件 删
我尝试将 UUID 添加到用户模型上的 UUID 数组属性,但它返回“前提条件失败 - id.exists”。我在数据库上使用更新而不是创建或保存。使用 PostgreSQL 数据库。错误在 Flue
使用 @Nonnull 注释的参数然后使用 Preconditions.checkNotNull() 检查是否有意义? 它们有什么区别?据我所知,使用 @Nonnull 只会指定一个契约(Contra
我有一个带有以下相关代码的 Python Eve 应用程序: def handle_user_update(request, lookup): if request and request.data:
当使用“If-Match” header 执行 PUT 或 DELETE 时,如果客户端发送的 ETag 指示过时,我想返回整个最新实体而不是仅仅返回 412 (包括 HTTP header 中的新
我正在浏览 Guava 代码库和 in Preconditions source there is some explanation如下引用: All recent hotspots (as of 2
我正在尝试使用 python mechanize 模块在网站上自动化一个过程。 使用以下代码,我将刷新站点,直到找到我想要关注的链接: for link in br.links
我收到以下错误: java.lang.IllegalArgumentException at com.google.api.client.repackaged.com.google.commo
我想在我的应用程序的方法中添加字段验证(例如字段不为空且为正)。 private void assertionTest(Integer i) { // want to first assert
我正在使用以下查询从 Google 数据存储区检索一些实体: var query = datastore.createQuery(namespace,tableName); query.select
我是一名优秀的程序员,十分优秀!