2016-12-14 1 views
3

を返します...Sanic(asyncio + uvloopウェブサーバ) - 私は<a href="https://github.com/channelcat/sanic" rel="nofollow noreferrer">Sanic</a>から始まるんだカスタム応答

Sanicは速い を行くために書かれているフラスコのようなPythonの3.5+のWebサーバです。 (...) Flicのようなものではなく、Sanicは非同期要求ハンドラをサポートしています。 これは、Python 3.5からの新しいshiny async/await構文を使用できることを意味し、コードを非ブロッキングかつ高速にします。

...この点まで、彼の使い方の例は非常に少なく、ドキュメントはあまり良くありません。

ドキュメント基本的な例に続いて、我々は

from sanic import Sanic 
from sanic.response import json 

app = Sanic() 

@app.route("/") 
async def test(request): 
    return json({"test": True}) 

if __name__ == '__main__': 
    app.run(host="0.0.0.0", port=8000) 

はどのようにして、たとえば、カスタムのステータスコードでカスタム応答を返すことができていますか?あなたはそのコードの実装以下で見ることができるよう

答えて

6

SanicでHTTP応答は、HTTPResponseのインスタンスであり、かつ機能jsontexthtmlはちょうどfactory pattern

from ujson import dumps as json_dumps 
...  

def json(body, status=200, headers=None): 
    return HTTPResponse(json_dumps(body), headers=headers, status=status, 
    content_type="application/json") 



def text(body, status=200, headers=None): 
    return HTTPResponse(body, status=status, headers=headers, 
         content_type="text/plain; charset=utf-8") 


def html(body, status=200, headers=None): 
    return HTTPResponse(body, status=status, headers=headers, 
         content_type="text/html; charset=utf-8") 
に続いて、オブジェクトの作成をカプセル化

ファンクションjson({"test": True})は、ujsonを使用してdictオブジェクトをJSON文字列としてダンプし、content_typeパラメータを設定します。

したがって、json({"message": "bla"}, status=201)を返すカスタムステータスコードを返すか、上記のコードとしてHTTPResponseを作成することができます。

関連する問題

 関連する問題