How to document the post body using flask-ReSTplus?
10,288
I have solved it (partially) using the following model
""" Model for documenting the API"""
insert_user_data = ns_database.model(
"Insert_user_data",
{
"customer_id": fields.String(description="cust ID", required=True),
"service_id": fields.String(description="service ID", required=True),
"customer_name": fields.String(description="Customer1", required=True),
"site_name": fields.String(description="site", required=True),
"service_type": fields.String(description="service", required=True),
},
)
@ns_database.route("/insert_user")
class database(Resource):
@ns_database.expect(insert_user_data)
def post(self):
"""insert data"""
json_data = request.json
customer_id = json_data["customer_id"]
service_id = json_data["service_id"]
customer_name = json_data["customer_name"]
site_name = json_data["site_name"]
service_type = json_data["service_type"]
now the API shows model for data input and an example
Comments
-
Prathisrihas Reddy almost 2 years
How to document the input body that is expected to be posted in the
value
field to appear so that the user knows what to post? the following data is used currently:{ "customer_id": "", "service_id": "", "customer_name": "", "site_name": "", "service_type": "" }
can we populate the value by default with the above json?
Code:
post_parser = reqparse.RequestParser() post_parser.add_argument('database', type=list, help='user data', location='json') @ns_database.route('/insert_user') class database(Resource): @ns_database.expect(post_parser) def post(self): """insert data""" json_data = request.json customer_id = json_data['customer_id'] service_id = json_data['service_id'] customer_name = json_data['customer_name'] site_name = json_data['site_name'] service_type = json_data['service_type']
-
Prathisrihas Reddy almost 6 yearsThe intention is to build an API but not rendering web pages. The above image is a part of the swagger documentation for the same API
-
Ahmouse almost 6 yearsAlright, but then I'm confused as to what you are asking
-
dmulter almost 6 yearsI believe if you get rid of the
RequestParser.add_argument
code that you aren't showing above, then Swagger UI will generate input fields for each of your API model fields. -
Prathisrihas Reddy almost 6 years@dmulter even if there was no model and without
@api.expect(model)
just removing theRequestParser.add_argument
will solve it is what you mean or? -
Prathisrihas Reddy almost 6 yearsLike the answer I have written, I am expecting
-
dmulter almost 6 yearsI meant that you only need the model definition along with
@api.expect(model)
to generate correct Swagger UI. You should not need theRequestParser.add_argument
code. That's what is creating thepayload
parameter in the UI. -
Prathisrihas Reddy almost 6 yearsYeah, I realised that and posted the answer :) thank you