create_aggregator_reqparser = RequestParser(bundle_errors=True)
create_aggregator_reqparser.add_argument("id",
type=str,
location="form",
required=True,
nullable=False,)
aggregators_model = Model('Aggregators', {'id': String(required=True)})
aggregators_ns = Namespace(name="aggregators", validate=True)
aggregators_ns.model(aggregators_model.name, aggregators_model)
def _create_successful_response(status_code, message):
response = jsonify(
status="success",
message=message,
)
response.status_code = status_code
response.headers['Cache-Control'] = 'no-store'
response.headers['Pragma'] = 'no-cache'
return response
def create_aggregator(parameters:dict):
parameters['id'] = parameters['id'].upper()
if Aggregators.query.get(parameters['id']):
abort(HTTPStatus.CONFLICT, f"{parameters['id']} is already entered", status="fail")
new_aggregator = Aggregators(**parameters)
db.session.add(new_aggregator)
db.session.commit()
return _create_successful_response(
status_code=HTTPStatus.CREATED,
message='successfully created',
)
def retrieve_aggregators_list():
data = Aggregators.query.all()
response_data = marshal(data, aggregators_model)
response = jsonify(response_data)
return response
@aggregators_ns.route("")
@aggregators_ns.response(int(HTTPStatus.BAD_REQUEST), 'Validation error.')
@aggregators_ns.response(int(HTTPStatus.INTERNAL_SERVER_ERROR), 'Internal server error.')
class Aggregators(Resource):
@aggregators_ns.response(int(HTTPStatus.BAD_REQUEST), 'Validation error.' )
@aggregators_ns.response(int(HTTPStatus.CREATED), 'Added new aggregator.')
@aggregators_ns.response(int(HTTPStatus.CONFLICT), 'aggregator id already exists.')
@aggregators_ns.expect(create_aggregator_reqparser, validate=True)
def post(self):
return create_aggregator(aggregators_ns.payload)
How do I check in a post request that all parameters from create_aggregator_reqparser are sent and they are filled with valid values
I thought @aggregators_ns.expect(create_aggregator_ru parser, validate=True) would do this job
But when I send
curl --location 'http://127.0.0.1:5000/aggregators' \ --header 'accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "idy" : "HH" }'
error occurs: KeyError: 'id'