2011-01-25 1 views
17

多分それは愚かな質問ですが、webpyのhttpステータスコードの仕方を理解できません。Webpy:httpステータスコードを300に設定する方法

ドキュメントには、メインのステータスコードの種類の一覧がありますが、ステータスコードを設定するための汎用機能はありますか?

私はunAPIサーバを実装しようとしており、識別子のみのリクエストに対しては300 Multiple Choicesと返信する必要があります。詳細情報here

ありがとう!

編集:私はちょうど私は、これが最善の解決策である

web.ctx.status = '300 Multiple Choices'

やっweb.ctxを通してそれを設定できることを発見しましたか?

答えて

18

web.pyが301や他のリダイレクトタイプに対してこれを行う方法は、web.HTTPError(これはweb.ctx.statusをサブクラス化する)です。たとえば、次のように

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) 

次に出力し、このステータスコードあなた、あなたのハンドラでraise MultipleChoices

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

それはもちろん、あなたの特定のunAPIアプリケーションのチューニングが必要になります。

the source for web.HTTPError in webapi.pyも参照してください。

+0

このメソッドは、一部のイメージをプログラムで提供する場合には304 Not Modifiedのジョブも行います –

関連する問題