Я начинаю новый проект на Python, чтобы помочь мне в изучении языка. Я разработчик C # и очень хорошо разбираюсь в REST API, но я чувствую, что чего-то не хватает в Python. Я пишу это с помощью Flask-RESTPlus и приводил следующие примеры, чтобы заставить его работать. В настоящее время у меня есть работающий API, но я пытаюсь разобраться с этой последней частью.
Мне нужно иметь возможность создавать конечную точку API, которая принимает числовой параметр маршрута, независимо от того, является ли он целым числом типа float.
Я могу заставить мой API работать правильно, если добавлю несколько маршрутов, но должен быть лучший способ.
Одна из моих конечных точек:
ns_area = Namespace('Area', description='Area calculations')
@ns_area.route('/Acre/<float:input>/ToSquareFoot')
class ConversionsArea(Resource):
def get(self, input):
input = float(input)
return area.acre_to_ft2(input)
Это возвращает правильный расчет
curl -X GET "http://127.0.0.1:5000/api/v1/Area/Acre/1.2/ToSquareFoot" -H "accept: application/json"
Возвращает 404, поскольку параметр маршрута не является числом с плавающей точкой
curl -X GET "http://127.0.0.1:5000/api/v1/Area/Acre/1/ToSquareFoot" -H "accept: application/json"
Кроме того, если у меня нет идентификатора типа, по умолчанию используется строка.
Я бы действительно не хотел дублировать такие маршруты.
ns_area = Namespace('Area', description='Area calculations')
@ns_area.route('/Acre/<float:input>/ToSquareFoot')
@ns_area.route('/Acre/<int:input>/ToSquareFoot')
class ConversionsArea(Resource):
def get(self, input):
input = float(input)
return area.acre_to_ft2(input)