在烧瓶中返回HTTP状态代码201

ing*_*.am 120 python httpresponse flask

我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201?

对于像404这样的错误,我们可以致电:

from flask import abort
abort(404)
Run Code Online (Sandbox Code Playgroud)

但对于201,我得到了

LookupError:201也不例外

我是否需要创建自己的例外,像这样的文档?

Iac*_*cks 129

你可以在这里阅读它.

return render_template('page.html'), 201
Run Code Online (Sandbox Code Playgroud)

  • 这需要`page.html` ...它本身不会起作用. (5认同)

Yas*_*sir 66

您可以使用Response返回任何http状态代码.

> from flask import Response
> return Response("{'a':'b'}", status=201, mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,这是执行此操作的首选方法。 (5认同)
  • 您可以将其重写为 `return {'a':'b'}, 201, {'Content-Type': 'application/json'}`,或者简单地重写为 `return {'a': 'b'}, 201 ` (2认同)
  • @MasoodKhaari 的方法实际上是正确的,因为它返回有效的 JSON - 它看起来像 `{'a':'b'}` 自动转换为 `{"a":"b"}`。双引号是正确的 JSON。原来的答案实际上返回单引号。 (2认同)

Har*_*ary 21

由于缺少建议在return语句中发送状态代码,并且如果您将其存储在某些变量中,如

notfound = 404
invalid = 403
ok = 200
Run Code Online (Sandbox Code Playgroud)

和使用

return xyz, notfound
Run Code Online (Sandbox Code Playgroud)

比时间确保它的类型是int而不是str.当我面对这个小问题时,这里还有全球的状态代码列表 http://www.w3.org/Protocols/HTTP/HTRESP.html

希望能帮助到你.

  • 好方法,但最好将它们作为像“status.NOT_FOUND”这样的模块来访问 (2认同)

Kis*_*n K 11

你可以做

result = {'a': 'b'}
return jsonify(result), 201
Run Code Online (Sandbox Code Playgroud)

如果您想在响应中返回JSON数据以及错误代码,请在此处此处阅读有关响应的信息,以获取make_response API详细信息

  • 如果使用烧瓶1.0.2,则无需使用make_response函数,只需使用return jsonify(result),201。 (3认同)

Mat*_*ite 9

在这里抄袭Luc 的 评论,但要返回空白响应,最201简单的选项是在您的路线中使用以下返回。

return "", 201
Run Code Online (Sandbox Code Playgroud)

例如:

return "", 201
Run Code Online (Sandbox Code Playgroud)


Ben*_*ler 5

理想情况下,在烧瓶代码中,还应尽可能频繁地指定MIME类型:

return html_page_str, 200, {'ContentType':'text/html'}

return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
Run Code Online (Sandbox Code Playgroud)

...等等


Viv*_*vek 5

您还可以使用 flask_api 发送响应

from flask_api import status

@app.route('/your-api/')
def empty_view(self):
    content = {'your content here'}
    return content, status.HTTP_201_CREATED
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到参考http://www.flaskapi.org/api-guide/status-codes/

  • 赞成使用常量而不是幻数 (2认同)