Trả lại mã trạng thái HTTP 201 trong bình


141

Chúng tôi đang sử dụng Flask cho một trong các API của chúng tôi và tôi chỉ tự hỏi liệu có ai biết cách trả lại phản hồi HTTP 201 không?

Đối với các lỗi như 404, chúng tôi có thể gọi:

from flask import abort
abort(404)

Nhưng cho năm 201 tôi nhận được

Tra cứuError: không có ngoại lệ cho năm 201

Tôi có cần tạo ngoại lệ của riêng mình như thế này trong tài liệu không?


18
return '', 201
Lục

Câu trả lời:


158

Bạn có thể đọc về nó ở đây.

return render_template('page.html'), 201

11
Điều này đòi hỏi page.html... Nó sẽ không hoạt động.
Chris Stryczynski

Đối với tôi loại xử lý lỗi này chỉ hoạt động (sau IIS) nếu UnlimitedUsage là con của werkzeug.exceptions.HTTPException, không phải là Ngoại lệ chung
Gyula Sámuel Karli

118

Bạn có thể sử dụng Phản hồi để trả về bất kỳ mã trạng thái http nào.

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

2
Đây phải là câu trả lời được chấp nhận, đây là cách để làm điều đó.
LoopsGod

Đây thực sự là giải pháp hoàn hảo
Shahriar Rahman Zahin

tuyệt vời, đừng bao giờ nghĩ trước
Arian Saputra

26

Vì thiếu đề xuất nên gửi mã trạng thái trong câu lệnh return và nếu bạn đang lưu trữ nó trong một số biến như

notfound = 404
invalid = 403
ok = 200

và sử dụng

return xyz, notfound

hơn thời gian đảm bảo loại của nó là int không str. như tôi đã đối mặt với vấn đề nhỏ này cũng ở đây là danh sách mã trạng thái được theo dõi trên toàn cầu http://www.w3.org/Prot Protocol / HTTP /HTRESP.html

Hy vọng nó giúp.


17

Bạn có thể làm

result = {'a': 'b'}
return jsonify(result), 201

nếu bạn muốn trả về dữ liệu JSON trong phản hồi cùng với mã lỗi Bạn có thể đọc về các phản hồi tại đâytại đây để biết chi tiết API make_response


5

Trong mã bình của bạn, bạn cũng nên xác định loại MIME thường xuyên nhất có thể:

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

return json.dumps({'success':True}), 200, {'ContentType':'application/json'}

...Vân vân


1

bạn cũng có thể sử dụng Vase_api để gửi phản hồi

from flask_api import status

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

bạn có thể tìm tài liệu tham khảo tại đây http://www.flaskapi.org/api-guide/status-codes/


1

Phụ thuộc vào cách API được tạo, thông thường với năm 201 (được tạo), bạn sẽ trả lại tài nguyên đã được tạo. Ví dụ: nếu nó đang tạo một tài khoản người dùng, bạn sẽ làm một cái gì đó như:

return {"data": {"username": "test","id":"fdsf345"}}, 201

Lưu ý số hậu tố là mã trạng thái được trả về.

Ngoài ra, bạn có thể muốn gửi tin nhắn cho khách hàng, chẳng hạn như:

return {"msg": "Created Successfully"}, 201

0

Trong trường hợp của tôi, tôi đã phải kết hợp những điều trên để làm cho nó hoạt động

return Response(json.dumps({'Error': 'Error in payload'}), 
status=422, 
mimetype="application/json")

0

Vì vậy, nếu bạn đang sử dụng flask_restfulGói trả lại API 201 sẽ trở nên như thế nào

def bla(*args, **kwargs):
    ...
    return data, 201

nơi datanên là bất kỳ giá trị có thể băm / JsonSerialiable, như dict, chuỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.