2013-05-19 11 views
17

Jak ustawić kod statusu HTTP mojej odpowiedzi w butelce?Ustawianie kodu statusu HTTP w butelce?

from bottle import app, run, route, Response 

@route('/') 
def f(): 
    Response.status = 300 # also tried `Response.status_code = 300` 
    return dict(hello='world') 

'''StripPathMiddleware defined: 
    http://bottlepy.org/docs/dev/recipes.html#ignore-trailing-slashes 
''' 

run(host='localhost', app=StripPathMiddleware(app())) 

Jak widać, wyjście nie zwraca kod stanu HTTP I set:

$ curl localhost:8080 -i 
HTTP/1.0 200 OK 
Date: Sun, 19 May 2013 18:28:12 GMT 
Server: WSGIServer/0.1 Python/2.7.4 
Content-Length: 18 
Content-Type: application/json 

{"hello": "world"} 
+0

robi 'z odpowiedzi importu butelki; response.status = 300' działa? http://bottlepy.org/docs/dev/api.html#bottle.response – dm03514

+1

Tak, to wystarczy. Dzięki :) –

Odpowiedz

30

wierzę należy używać response

from bottle import response; response.status = 300

12

Butelka wbudowanego -w typ odpowiedzi obsługuje wdzięcznie kody statusu. Zastanów się coś takiego:

return bottle.HTTPResponse(status=300, body=theBody) 

Jak w:

import json 
from bottle import HTTPResponse 

@route('/') 
def f(): 
    theBody = json.dumps({'hello': 'world'}) # you seem to want a JSON response 
    return bottle.HTTPResponse(status=300, body=theBody) 
+0

Odpowiedź dm03514 była tym, czego szukałem. Daje mi wszystko, czego szukałem, nie wymagając żadnych zmian w moim kodzie (oprócz zmiany nazwy z 'Response' na' response'. –

-1

podbiciem może użyć, aby uzyskać więcej mocy z httpResponse pokazać kod statusu (200,302,401):

Jak można po prostu to zrobić sposób:

import json 
from bottle import HTTPResponse 

response={} 
headers = {'Content-type': 'application/json'} 
response['status'] ="Success" 
response['message']="Hello World." 
result = json.dumps(response,headers) 
raise HTTPResponse(result,status=200,headers=headers) 
Powiązane problemy