python http-headers http-status-codes web.py

python - Webpy: cómo configurar el código de estado http a 300



http-headers http-status-codes (1)

Tal vez sea una pregunta estúpida, pero no puedo averiguar cómo usar un código de estado http en webpy.

En la documentación puedo ver una lista de tipos para los códigos de estado principales, pero ¿hay una función genérica para configurar el código de estado?

Estoy tratando de implementar un servidor unAPI y se requiere que responda con 300 Multiple Choices a una solicitud con solo un identificador. Más información here

¡Gracias!

EDIT: Acabo de descubrir que puedo configurarlo a través de web.ctx haciendo

web.ctx.status = ''300 Multiple Choices''

¿Es esta la mejor solución?


La forma en que web.py hace esto para 301 y otros tipos de redireccionamiento es mediante la subclasificación de web.HTTPError (que a su vez establece web.ctx.status ). Por ejemplo:

class MultipleChoices(web.HTTPError): def __init__(self, choices): status = ''300 Multiple Choices'' headers = {''Content-Type'': ''text/html''} data = ''<h1>Multiple Choices</h1>/n<ul>/n'' data += ''''.join(''<li><a href="{0}">{0}</a></li>/n''.format(c) for c in choices) data += ''</ul>'' web.HTTPError.__init__(self, status, headers, data)

Luego, para generar este código de estado, usted raise MultipleChoices en su controlador:

class MyHandler: def GET(self): raise MultipleChoices([''http://example.com/'', ''http://www.google.com/''])

Necesitará afinar para su aplicación unAPI particular, por supuesto.

Vea también la fuente de web.HTTPError en webapi.py .