如何对Flask REST API返回JSON中的两个数字字段求和
您好,
我搭建了一个Flask REST API应用,通过POST请求会返回如下结构的JSON数据:
{ "you sent": [ { "number": "5" }, { "number": "10" } ] }
我的目标是计算这两个数字的总和,目前没有实现思路。
Flask app 代码
from flask import Flask, request from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) class HelloWorld(Resource): def get(self): return {'about': 'Hello World'} def post(self): some_json = request.get_json() return {'you sent': some_json}, 201 api.add_resource(HelloWorld, '/') if __name__ == '__main__': app.run(debug=True)
main.py 代码
import requests url = 'http://127.0.0.1:5000/' myobj = {'number': '5'} mysecobj = {'number': '10'} x = requests.post(url, json=(myobj, mysecobj)) print(x.text)
实现方法
总和计算可以放在服务端完成,也可以放在客户端完成,两种实现都很简单:
方案1:服务端计算后直接返回结果(推荐)
只需要修改Flask接口的post方法逻辑,遍历接收到的参数列表,把每个条目的number字段转成整数累加,最后把总和和原接收内容一起返回即可。注意当前传的number是字符串格式,必须先转成数值类型再计算,否则会变成字符串拼接。
修改后的Flask代码:
from flask import Flask, request from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) class HelloWorld(Resource): def get(self): return {'about': 'Hello World'} def post(self): some_json = request.get_json() # 计算总和 total = 0 for item in some_json: total += int(item['number']) return {'you sent': some_json, 'total': total}, 201 api.add_resource(HelloWorld, '/') if __name__ == '__main__': app.run(debug=True)
修改后接口返回结果会多一个total字段,直接就是两个数字的和。
方案2:客户端拿到响应后自行计算
如果不想改接口逻辑,也可以在客户端拿到接口返回的JSON后,解析内容做累加,修改后的main.py代码:
import requests url = 'http://127.0.0.1:5000/' myobj = {'number': '5'} mysecobj = {'number': '10'} x = requests.post(url, json=(myobj, mysecobj)) resp_data = x.json() # 计算总和 total = 0 for item in resp_data['you sent']: total += int(item['number']) print("返回内容:", resp_data) print("数字总和:", total)
运行后就能直接打印出计算好的总和15。
内容的提问来源于stack exchange,提问作者user19215134
相关产品推荐
相关产品推荐

