Setting HTTP status code in Bottle?

18,879

Solution 1

I believe you should be using response

from bottle import response; response.status = 300

Solution 2

Bottle's built-in response type handles status codes gracefully. Consider something like:

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

As 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)
Share:
18,879
Foo Stack
Author by

Foo Stack

Updated on June 15, 2022

Comments

  • Foo Stack
    Foo Stack about 2 years

    How do I set the HTTP status code of my response in Bottle?

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

    As you can see, the output doesn't return the HTTP status code 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"}