一边上班一边赶工做开源项目真是太累了。更不用说还要一边焦虑写书的进度。不过这次 2.0 版本基本把想做的功能都完成了,剩下两个大的功能(为蓝本拆分单独的 OpenAPI Spec、解耦 marshmallow)实在是没精力加进来了,只好放到 2.1。
APIFlask 2.0 版本的 codename 是 Gongqing(年初我从五角场搬到了共青森林公园旁边。没错,1.0 版本是 Wujiaochang)。
回到正题,这次最主要的一个变动(breaking change)是把所有 input 装饰器的参数改成了关键字参数。
@app.post('/pets') @app.input(PetQuery, location='query') @app.input(PetIn) # equals to app.input(PetIn, location='json') def create_pet(query_data, json_data): pass
关键字参数的名字默认是 {location}_data
,通过 arg_name
参数可以自定义。这个改动让我删掉了很多 hack Flask 的代码。推动这个功能在上游 webargs 实现,所以不用加代码在自己这里。再加上一些改动已经在 Flask 实现了,又删掉一些。非常轻松。理想情况是,文档越来越多,代码越来越少。
如果你感兴趣的话,下面是 2.0 版本的详细内容:
祝贺