2013-05-19 13 views
17

Wie stelle ich den HTTP-Statuscode meiner Antwort in Bottle ein?HTTP-Statuscode in Bottle einstellen?

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())) 

Wie Sie sehen können, ist der Ausgang den HTTP-Statuscode nicht zurück I gesetzt:

$ 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

tut 'von flasche import response; antwort.status = 300' arbeit? http://bottlepy.org/docs/dev/api.html#bottle.response – dm03514

+1

Ja, das hat den Trick gemacht. Danke :) –

Antwort

30

Ich glaube, Sie sollten response

from bottle import response; response.status = 300

12

Bottle gebaut werden mit -in Antworttyp verarbeitet die Statuscodes ordnungsgemäß. Betrachten Sie so etwas wie:

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

Wie in:

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

dm03514's Antwort war was ich gesucht habe. Gibt mir alles, was ich wollte, ohne irgendwelche Änderungen an meinem Code zu erfordern (abgesehen von Umbenennen von Antwort auf Antwort). –

-1

Erhöhung Nutzen sein kann, um mehr Leistung zu bekommen mit Httpresponse den Status Code zu erhalten (200.302.401):

Wie können Sie einfach tun dies weg:

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)