플라스크에 HTTP 상태 코드 201 반환


141

우리는 API 중 하나에 Flask를 사용하고 있으며 HTTP 응답 201을 반환하는 방법을 아는 사람이 있는지 궁금합니다.

404와 같은 오류의 경우 다음을 호출 할 수 있습니다.

from flask import abort
abort(404)

하지만 201 년에는

LookupError : 201에 대한 예외 없음

내가 좋아하는 내 자신의 예외를 만들 필요가 있는가 워드 프로세서에?


18
return '', 201
Luc

답변:


158

여기에서 읽을 수 있습니다 .

return render_template('page.html'), 201

11
이것은 필요합니다 page.html... 그것은 스스로 작동하지 않습니다.
Chris Stryczynski

저에게 InvalidUsage가 일반적인 예외가 아닌 werkzeug.exceptions.HTTPException의 자식 인 경우에만 IIS에서 이러한 오류 처리 유형이 작동했습니다.
Gyula Sámuel Karli

118

응답을 사용하여 http 상태 코드를 반환 할 수 있습니다.

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

2
이것은 받아 들일만한 대답이어야합니다. 이것은 그것을 할 수있는 길입니다.
LoopsGod

이것은 정말 완벽한 솔루션입니다
Shahriar Rahman Zahin

위대한, 전에 생각하지
Arian Saputra

26

리턴 명령문에 제안 된 송신 상태 코드가없고 다음과 같은 변수에 저장하는 경우

notfound = 404
invalid = 403
ok = 200

그리고 사용

return xyz, notfound

시간보다 유형이 str이 아닌지 확인하십시오. 이 작은 문제에 직면했을 때 여기에도 전 세계적으로 따르는 상태 코드 목록이 있습니다. http://www.w3.org/Protocols/HTTP/HTRESP.html

도움이 되길 바랍니다.


17

넌 할 수있어

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

오류 코드와 함께 응답에 JSON 데이터를 반환하려는 경우 make_response API 세부 정보에 대한 응답에 대한 여기여기 를 읽을 수 있습니다


6

플라스크 코드에서 가능한 한 자주 MIME 유형을 지정하는 것이 이상적입니다.

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

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

...기타


1

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

당신은 여기에 참조를 찾을 수 있습니다 http://www.flaskapi.org/api-guide/status-codes/


1

API 작성 방법에 따라 일반적으로 201 (만들기)을 사용하여 작성된 자원을 리턴합니다. 예를 들어 사용자 계정을 만드는 경우 다음과 같은 작업을 수행합니다.

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

접미사 번호는 반환 된 상태 코드입니다.

또는 다음과 같은 메시지를 클라이언트에 보낼 수 있습니다.

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

0

내 경우에는 작동시키기 위해 위의 내용을 결합해야했습니다.

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

0

따라서 flask_restfulAPI에 Package를 사용하면 201을 반환하면

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

여기서 dataDICT, 문자열과 같은 어떤 해쉬 / JsonSerialiable 값이어야한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.