1

REST フレームワークとして web.py を使用して HTTP エラー コードを処理する方法を理解しようとしています。簡単に try/catch ブロックを使用して HTTP 404、400、500 などを返すことができますが、カスタム JSON メッセージを送信するのに苦労しています。

import web
import json
urls = (
    '/test/(.*)', 'Test'
)
app = web.application(urls, globals())

def notfound():
    return web.notfound(json.dumps({'test': 'test'}))

class Test:
    def GET(self, id):
        web.header('Content-Type', 'application/json')
        return self.get_resource(str(id))

    def get_resource(self, id):
        result = {}
        if id == '1':
            result = {'1': 'one'}
        elif id == '3':
            return web.notfound()
        return json.dumps(result)

if __name__ == '__main__':
    web.config.debug = False
    app.notfound = notfound
    app.run()

これは正常にid == 3動作しますが、動作をオーバーライドできず、Content-Typeヘッダーが複製される場合:

# curl -i -H "Accept: application/json" http://localhost:8080/test/3
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Type: text/html
Transfer-Encoding: chunked
Date: Mon, 09 Sep 2013 23:59:28 GMT
Server: localhost

404 Not Found

カスタム メッセージを含む JSON コンテンツ タイプを返すにはどうすればよいですか?

4

1 に答える 1