Python REST API 数值型路由参数问题
Python REST API Numeric Type Route Parameter Issues
我正在 Python 开始一个新项目来帮助我学习这门语言。我是一名 C# 开发人员,对 REST API 非常熟悉,但我觉得我在 Python 中遗漏了一些东西。我正在使用 Flask-RESTPlus 编写此代码,并一直在遵循示例以使其正常工作。按照目前的情况,我确实有一个工作 API,但我正在努力弄清楚这最后一块。
我需要能够创建一个 API 接受数字路由参数的端点,无论它是浮点数还是整数。
如果我添加多条路由,我的 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)
这returns一个正确的计算
curl -X GET "http://127.0.0.1:5000/api/v1/Area/Acre/1.2/ToSquareFoot" -H "accept: application/json"
这个returns一个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)
你可以在路径中使用string
并评估它是否可以转换为float
。如果不是,请提高 ValueError
并打印正确的消息。
ns_area = Namespace('Area', description='Area calculations')
@ns_area.route('/Acre/<string:input>/ToSquareFoot')
class ConversionsArea(Resource):
def get(self, input):
try:
input = float(input)
return area.acre_to_ft2(input), 200
except ValueError:
return "Can't convert {} to number".format(input), 400
我正在 Python 开始一个新项目来帮助我学习这门语言。我是一名 C# 开发人员,对 REST API 非常熟悉,但我觉得我在 Python 中遗漏了一些东西。我正在使用 Flask-RESTPlus 编写此代码,并一直在遵循示例以使其正常工作。按照目前的情况,我确实有一个工作 API,但我正在努力弄清楚这最后一块。
我需要能够创建一个 API 接受数字路由参数的端点,无论它是浮点数还是整数。
如果我添加多条路由,我的 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)
这returns一个正确的计算
curl -X GET "http://127.0.0.1:5000/api/v1/Area/Acre/1.2/ToSquareFoot" -H "accept: application/json"
这个returns一个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)
你可以在路径中使用string
并评估它是否可以转换为float
。如果不是,请提高 ValueError
并打印正确的消息。
ns_area = Namespace('Area', description='Area calculations')
@ns_area.route('/Acre/<string:input>/ToSquareFoot')
class ConversionsArea(Resource):
def get(self, input):
try:
input = float(input)
return area.acre_to_ft2(input), 200
except ValueError:
return "Can't convert {} to number".format(input), 400