0

我发现了一个看起来也不太好的行为:我使用 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"
4

2 回答 2

3

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

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

于 2014-02-02T08:21:32.563 回答
0

文档似乎指出这种类型的动作正是发生的事情。

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

我从来没有使用过这个,所以我无法提供更多帮助。但是根据上面的链接描述,这对我来说似乎不是很 RESTful。我倾向于构建自己的界面而不是依赖某些 OOTB 产品的大部分原因。可悲的是,我看到很多糟糕的实现。

于 2014-02-02T06:02:59.157 回答