有没有一种方法来自动生成瓶路线REST API JSON描述(Is there a way to a

2019-10-21 10:17发布

在情况下,我有这样的代码:

class MyApp():
    def __init__(self):
        self.bottle = Bottle()
        self.bottle.route('/')(self.show_api)
        self.bottle.route('/api/')(self.show_api)
        self.bottle.route('/api/item', method='PUT')(self.save_item)

    def show_api(self):
        return <JSON representation of the API?>

是否有可能得到JSON格式从一个REST API文档? 来回某种原因self.bottle.routes没有返回任何有用的东西。

谢谢!

Answer 1:

其实生成JSON API说明以正确的方式似乎是:

from collections import defaultdict
import json

def show_api(self):
    api_dict = defaultdict(dict)

    for route in self.bottle.routes:
        api_dict[route.rule]['url'] = 'http://myhost:port{}'.format(route.rule)
        api_dict[route.rule]['method'] = route.method

        # additional config params
        for key in route.config:
            api_dict[route.rule][key] = route.config[key]

    return json.dumps(api_dict)


Answer 2:

Bottle.route()是指被用作装饰:

@app.route('/hello/:name')
def hello(name):
    return 'Hello %s' % name

因此,它不会返回一些有用的东西:装饰功能。

然后,您可以使用app.routes获得申报路由的列表。

print(app.routes)

输出:

[<GET '/hello/:name' <function hello at 0x7f4137192e18>>]

函数是不能直接JSON序列化。 但是你可以很容易地使用str得到一个字符串represenation。



文章来源: Is there a way to automatically generate REST API JSON description from Bottle routes