Динамическое программирование - ваш лучший выбор для API.
from bottle import Bottle, get, post, request, response, route, abort, template, redirect, run
import ujson as json
import datetime
from bson import json_util
class Api(object):
def __init__(self, request, option):
self.option = option
self.payload = merge_dicts(dict(request.forms), dict(request.query.decode()))
def currentTime(self):
dateString=datetime.datetime.now().strftime("%Y-%m-%d")
timeString=datetime.datetime.now().strftime("%H:%M:%S")
string="{\"date\":"+dateString+",\"time\":"+timeString+"}"
return string
def hello(self):
return {'hello' : self.payload['name']}
@get('/api/<command>')
@post('/api/<command>')
@get('/api/<command>/<option>')
@post('/api/<command>/<option>')
def callapi(command = None, option = None):
A = Api(request, option)
func = getattr(A, "{}" .format(command), None)
if callable(func):
result = func()
if result:
if request.method == 'GET':
response.headers['Content-Type'] = 'application/json'
response.headers['Cache-Control'] = 'no-cache'
return json.dumps(result, indent=4,default=json_util.default)
else:
return json.dumps({})
def merge_dicts(*args):
result = {}
for dictionary in args:
result.update(dictionary)
return result
if __name__ == '__main__':
#app.run(debug=True)
run(host='localhost', port=8080)
Это позволяет вам теперь просто создавать новые функции в классе Api, и они динамически становятся маршрутами URL.При необходимости вы можете проверить наличие сообщений или получить доступ к методам API через запрос.Я объединяю полезные данные из формы или строки запроса, чтобы вы могли принять любой из них, и он обрабатывает одну полезную нагрузку.
Опция на всякий случай, если вы хотите больше функциональности для маршрута.