Flask REST API 返回 json 数据,末尾有额外的空大括号
Flask REST API returned json data with extra empty curly brackets at the end
所以我正在制作此 API 以与我的 Vue 前端一起使用,起初一切正常,但我不知道前端突然无法正确显示检索到的数据,我我正在使用 select 上的数据,它只显示空选项。当我检查邮递员 API 返回的数据时,它显示如下内容:
[
[
//my data here
],
{}
]
如您所见,子句末尾有一个空的大括号,我怀疑这是前端无法正确显示数据的原因,但如果不是这样,那我就不会不知道什么是...请帮助我...
这是我的前端代码:
<select v-model="cpuSelect" name="cpu" id="cpu" class="form-control" tabindex="12">
<option v-for="cpu in cpus" :key="cpu.id">{{ cpu.Name }}</option>
</select>
以及 vue 中的脚本:
import axios from 'axios';
export default {
data() {
return {
cpus: [],
cpuSelect: ''
}
},
async mounted() {
this.load()
},
methods: {
async load(){
const response = await axios.get(`http://127.0.0.1:5000/api/v1/parts/cpu`)
this.cpus = response.data
}
}
}
对于烧瓶模型:
class cpu(db.Model):
id = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.String)
Socket = db.Column(db.String)
@staticmethod
def get_all_cpu():
return cpu.query.all()
@staticmethod
def get_cpu(id):
return cpu.query.get(id)
def __repr(self):
return '<id {}>'.format(self.id)
class cpuSchema(Schema):
id = fields.Int(dump_only=True)
Name = fields.Str(dump_only=True)
Socket = fields.Str(dump_only=True)
烧瓶视图:
@parts_api.route('/cpu', methods=['GET'])
def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all, many=True)
return custom_response(data, 200)
def custom_response(res, status_code):
"""
Custom Response Function
"""
return Response(
mimetype="application/json",
response=json.dumps(res),
status=status_code
)
请帮帮我...
尝试从“转储”调用中删除“很多”
def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all)
return custom_response(data, 200)
我假设 cpu_schema.dump() 结果的格式是 MarshalResult(data=[], errors={})
,那就是
@parts_api.route('/cpu', methods=['GET'])
def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all, many=True).data
return custom_response(data, 200)
实际上空大括号是MarshalResult
的错误信息。
参考:
所以我正在制作此 API 以与我的 Vue 前端一起使用,起初一切正常,但我不知道前端突然无法正确显示检索到的数据,我我正在使用 select 上的数据,它只显示空选项。当我检查邮递员 API 返回的数据时,它显示如下内容:
[
[
//my data here
],
{}
]
如您所见,子句末尾有一个空的大括号,我怀疑这是前端无法正确显示数据的原因,但如果不是这样,那我就不会不知道什么是...请帮助我...
这是我的前端代码:
<select v-model="cpuSelect" name="cpu" id="cpu" class="form-control" tabindex="12">
<option v-for="cpu in cpus" :key="cpu.id">{{ cpu.Name }}</option>
</select>
以及 vue 中的脚本:
import axios from 'axios';
export default {
data() {
return {
cpus: [],
cpuSelect: ''
}
},
async mounted() {
this.load()
},
methods: {
async load(){
const response = await axios.get(`http://127.0.0.1:5000/api/v1/parts/cpu`)
this.cpus = response.data
}
}
}
对于烧瓶模型:
class cpu(db.Model):
id = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.String)
Socket = db.Column(db.String)
@staticmethod
def get_all_cpu():
return cpu.query.all()
@staticmethod
def get_cpu(id):
return cpu.query.get(id)
def __repr(self):
return '<id {}>'.format(self.id)
class cpuSchema(Schema):
id = fields.Int(dump_only=True)
Name = fields.Str(dump_only=True)
Socket = fields.Str(dump_only=True)
烧瓶视图:
@parts_api.route('/cpu', methods=['GET'])
def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all, many=True)
return custom_response(data, 200)
def custom_response(res, status_code):
"""
Custom Response Function
"""
return Response(
mimetype="application/json",
response=json.dumps(res),
status=status_code
)
请帮帮我...
尝试从“转储”调用中删除“很多”
def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all)
return custom_response(data, 200)
我假设 cpu_schema.dump() 结果的格式是 MarshalResult(data=[], errors={})
,那就是
@parts_api.route('/cpu', methods=['GET'])
def get_all_cpu():
cpu_query_all = cpu.get_all_cpu()
data = cpu_schema.dump(cpu_query_all, many=True).data
return custom_response(data, 200)
实际上空大括号是MarshalResult
的错误信息。
参考: