Я работаю над API (используя фреймворк Python Bottle), который будет использоваться множеством клиентов. Поступая так, я пытаюсь убить двух зайцев одним выстрелом в отношении документации. Что я хотел бы сделать, так это создать какой-то тип декоратора / атрибута, в котором я могу описать каждый общедоступный маршрут API. Затем у меня есть маршрут, который проходит через все другие маршруты и собирает эту информацию (описание, ввод, вывод ...). Эта информация возвращается в виде массива JSON, где она отображается в удобном для пользователя формате html.
Получить информацию о маршруте очень просто:
@route('/api-map',method=['GET'])
def api_map():
api_methods = []
for route in app.routes:
if route.rule != "/api-map":
##TODO: get custom attribute from routes function with description, inputs, outputs...
api_methods.append({"route":route.rule,"desc":"?"})
response.content_type = 'application/json'
return {"apiMap":api_methods}
Но я застрял в том, как достичь документации. Ниже концептуально показано, что я пытаюсь реализовать, где svmdoc - это атрибут, в который я помещаю эту информацию:
@route('/token',method=['GET'])
@svmdoc(desc="Generates Token",input="username and password")
def getToken():
#TODO token magic
Есть предложения о том, как реализовать этот подход? Существует ли что-то подобное, о чем я не знаю?