Flask REST API - parameter parsing - required
examples/flask/api_paremeters_required/api.py
from flask import Flask, request from flask_restful import Api, Resource, reqparse app = Flask(__name__) api = Api(app) class Echo(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument('text', help='Type in some text', required=True) args = parser.parse_args() return { "res": f"Text: {args['text']}" } def post(self): parser = reqparse.RequestParser() parser.add_argument('text', help='Type in some text') args = parser.parse_args() return { "Answer": f"You said: {args['text']}" } api.add_resource(Echo, '/echo')
examples/flask/api_paremeters_required/test_api.py
import api def test_echo(): web = api.app.test_client() rv = web.get('/echo?text=hello') assert rv.status == '200 OK' assert rv.headers['Content-Type'] == 'application/json' assert rv.json == {'res': 'Text: hello'} rv = web.post('/echo', data={'text': 'ciao'}) assert rv.status == '200 OK' assert rv.headers['Content-Type'] == 'application/json' assert rv.json == {'Answer': 'You said: ciao'} # If the parameter is missing the parser just returns None rv = web.get('/echo') assert rv.status == '400 BAD REQUEST' assert rv.headers['Content-Type'] == 'application/json' assert rv.json == {'message': {'text': 'Type in some text'}}