为什么python-eve在更新失败后返回http状态200?

时间:2014-02-02 05:38:32

标签: python mongodb eve

我发现一个看起来不太好的行为:我使用python-eve更新了一条记录,出现了错误,因为我发送了一些不应该发送的字段,但这不是问题。我发现即使出现错误,响应机构也会显示相对于它的消息,http响应状态为200.
我不确定它是否是错误或者是标准行为,我希望收到验证失败时出现4xx错误。

任何想法?
由于
加斯

Request URL:http://127.0.0.1:5000/players/52ed7a53a54d75bf68c1b720
Request Method:PUT
Status Code:200 OK
Request Headersview source
    Accept:application/json, text/javascript, */*; q=0.01
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:en-US,en;q=0.8,es;q=0.6
    Authorization:Basic YWRtaW46c2VjcmV0
    Cache-Control:no-cache
    Connection:keep-alive
    Content-Length:335
    Content-Type:application/json
    Cookie:roles="[\"operator\"\054\"admin\"]"
    Host:127.0.0.1:5000
    If-Match:eeadcc62ad252697c9b109c00cae771c0690c172
    Origin:http://127.0.0.1:5000
    Pragma:no-cache
    Referer:http://127.0.0.1:5000/static/index.html
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36
    X-Requested-With:XMLHttpRequest
        Request Payloadview source
        {_updated:2014-02-01T22:50:59.000Z, name:gas1e, score:260, _tenant:tonga.net,…}
        _created: "2014-02-01T22:50:59.000Z"
        _etag: "eeadcc62ad252697c9b109c00cae771c0690c172"
        _issues: {_updated:unknown field, _created:unknown field, _status:unknown field, _issues:unknown field,…}
        _status: "ERR"
        _tenant: "tonga.net"
        _updated: "2014-02-01T22:50:59.000Z"
        name: "gas1e"
        score: 260
Response Headersview source
    Access-Control-Allow-Headers:
    Access-Control-Allow-Max-Age:21600
    Access-Control-Allow-Methods:HEAD, GET, PUT, POST, DELETE, OPTIONS, PATCH
    Access-Control-Allow-Origin:*
    Content-Length:171
    Content-Type:application/json
    Date:Sun, 02 Feb 2014 05:16:09 GMT
    Server:Werkzeug/0.9.4 Python/2.7.5
    Response Payloadview source
        _issues: {_updated:unknown field, _created:unknown field, _status:unknown field, _issues:unknown field,…}
        _created: "unknown field"
        _etag: "unknown field"
        _issues: "unknown field"
        _status: "unknown field"
        _updated: "unknown field"
        _status: "ERR"

2 个答案:

答案 0 :(得分:3)

Eve支持批量插入,这意味着POST可以(通常会)包含多个提交插入的文档。其中一些文档可能会通过验证并将被插入,其他文档可能无法通过验证。这就是为什么你得到200(请求被接受和处理)和带有效负载的数组。每个数组项都包含成功插入文档的id,etag,创建日期,或者如果验证失败,则包含文档未通过的原因。

这就是说,我正在考虑批量插入可选,这将使单个文档验证失败的返回4xx非常合理。

答案 1 :(得分:0)

文档似乎指出这种行为正是发生的事情。

http://python-eve.org/features.html#data-validation

我从未使用过这个,所以我可以提供更多帮助。但根据上面描述的链接,这对我来说似乎并不太可靠。我倾向于构建自己的界面而不是依赖某些OOTB产品的原因很多。可悲的是,我看到很多不好的实现。