我正在使用棉花糖来验证我在烧瓶restful api中接收到的json数据。但是,在 post 请求中,有一个互斥字段。
例如 :
{"predict": {"id": "5hgy667y4h7f"}}
或{"predict": {"text": "This is a sample sentence"}}
但是id
和text
都应该一起发送。此外,根据收到的天气id
或text
调用不同的方法。
Q)我如何在棉花糖中构建一个模式以验证上述内容?
我为以下任一字段提供的示例代码如下-
from flask import Flask, request
from flask_restful import Resource, Api, abort
from marshmallow import Schema, fields, ValidationError
app = Flask(__name__)
api = Api(app)
class Mutex1(Schema):
text = fields.Str(required=True)
class Meta:
strict = True
class Mutex2(Schema):
id_ = fields.Str(required=True)
class Meta:
strict = True
class MySchema(Schema):
predict = fields.Nested(Mutex1)
class Meta:
strict = True
class Test(Resource):
def post(self):
input_req = request.get_json(force=True)
try:
result = MySchema().load(input_req)
except ValidationError:
return {'message': 'Validation Error'}, 500
else:
return {'message': 'Successful validation'}, 200
api.add_resource(Test, '/test')
app.run(host='0.0.0.0', port=5000, debug=True)
此代码仅接受text
,并且text
和id_
一起接受,但是它仅拒绝id_
。知道如何让它接受id_
并同时拒绝text
和id_
时拒绝它吗?
答案 0 :(得分:0)
同时创建一个Mutex
和text
的{{1}}模式,并添加一个schema-level validation,如果两者都失败的话。
id_
旁注: