2013-05-19 4 views
17

Как установить код состояния HTTP моего ответа в Bottle?Настройка кода состояния HTTP в бутылке?

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

Как вы можете видеть, выход не возвращает код состояния HTTP я установить:

$ 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

делает 'от ответа на импорт бутылки; response.status = 300' work? http://bottlepy.org/docs/dev/api.html#bottle.response – dm03514

+1

Да, это сделал трюк. Спасибо :) –

ответ

30

Я считаю, вы должны использовать response

from bottle import response; response.status = 300

12

бутылки встроенный - В режиме ответа грамотно обрабатывает коды состояния. Рассмотрим что-то вроде:

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

Как и в:

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 был тем, что я искал. Дает мне все, что мне нужно, без каких-либо изменений в моем коде (кроме переименования из 'Response' в' response'. –

-1

рейза может быть использовать, чтобы получить больше мощности с HTTPResponse, чтобы показать код состояния (200,302,401):

Как вы можете просто сделать это путь:

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) 
Смежные вопросы