Webargs,restfulパラメータ処理
10289 ワード
一般的なプログラマーの印象は服装がアウトだが、新技術やデジタル製品の追求は絶対にinだ.私が言った
前言:今回使うwebフレームワークはTornadoで、webargsの中国語の例はまだとても少なくて、私は頭を起こして、次に多くのパクリがあることを指定します
1パラメータ取得の基本操作
公式サイトには2つあります.1つは装飾器を使用することです.1つはparseインスタンスを宣言することです.二つの方法がある以上、どちらがもっと優雅なのかを考えなければなりません.restfulのスタイルの大前提では、同じルーティングパスには、「/api/books/」というインタフェースがPOST要求を使用すると、新しい本を追加する操作に対応し、GET要求はすべての本の集合を要求することを示すなど、さまざまな要求方式がある可能性があります.私にとって、装飾器はパラメータと関数の関連をより明らかに示すことができると思います.例えば、
一方、宣言インスタンスを選択すると、大量のパラメータがスタックされやすいが、変数名で区別でき、初心者にとって読みやすさが高いため、それぞれが望ましい.
2あるパラメータに対する値の制限
たとえばソートは、タイトルtitle、パブリッシュ時間published_のみです.timeの2つの値はmarshmallowを使うことができます.validateのOneOfの方法.
3経路パラメータを受信しながらbodyパラメータを受信することができる
例えば本の情報を更新する方法
ファッションの定義は、新しいことを試してみることです.
前言:今回使うwebフレームワークはTornadoで、webargsの中国語の例はまだとても少なくて、私は頭を起こして、次に多くのパクリがあることを指定します
1パラメータ取得の基本操作
公式サイトには2つあります.1つは装飾器を使用することです.1つはparseインスタンスを宣言することです.二つの方法がある以上、どちらがもっと優雅なのかを考えなければなりません.restfulのスタイルの大前提では、同じルーティングパスには、「/api/books/」というインタフェースがPOST要求を使用すると、新しい本を追加する操作に対応し、GET要求はすべての本の集合を要求することを示すなど、さまざまな要求方式がある可能性があります.私にとって、装飾器はパラメータと関数の関連をより明らかに示すことができると思います.例えば、
@use_args({
"q": fields.Str(), #
"sort": fields.Str(missing='create_time')),
}, location='query')
def get(self, args: dict) -> None:
pass
@use_args({
'titile': fields.Str(required=True),
'writer': fields.Str(required=True),
'remark': fields.Str(required=True)
}, location='query')
def post(self, args: dict) -> None:
pass
一方、宣言インスタンスを選択すると、大量のパラメータがスタックされやすいが、変数名で区別でき、初心者にとって読みやすさが高いため、それぞれが望ましい.
2あるパラメータに対する値の制限
たとえばソートは、タイトルtitle、パブリッシュ時間published_のみです.timeの2つの値はmarshmallowを使うことができます.validateのOneOfの方法.
@use_args({
"q": fields.Str(), #
"sort": fields.Str(missing='create_time', validate=OneOf([
'title',
'published_time',
])),
}, location='query')
def get(self, args: dict) -> None:
pass
3経路パラメータを受信しながらbodyパラメータを受信することができる
例えば本の情報を更新する方法
@route('/api/books/([0-9]+)')
class BookAPI(BaseHanlder):
def patch(self, id: int) -> None:
"""
Args:
id: id
Returns:Json
"""
id = int(id)
args = json.loads(self.request.body)
flage = True
book = self.sess.query(Books).filter(Books.id == id)
if not book:
raise NotFoundError()
try:
book.update(args)
self.sess.commit()
except Exception as e:
flage = False
__import__('traceback').print_exc()
self.sess.rollback()
msg = f' {id} ' if flage else f' {id} '
return self.write_json(data=None, msg=msg)
ファッションの定義は、新しいことを試してみることです.