Parsing a list of integers in flask-restful

Ricardo picture Ricardo · Jan 3, 2015 · Viewed 14.2k times · Source

I'm using the flask-restful, and I'm having trouble constructing a RequestParser that will validate a list of only integers. Assuming an expected JSON resource format of the form:

{
    'integer_list': [1,3,12,5,22,11, ...] # with a dynamic length
}

... and one would then create a RequestParser using a form something like:

from flask.ext.restful import reqparse
parser = reqparse.RequestParser()
parser.add_argument('integer_list', type=list, location='json')

... but how can i validate is an integer list?

Answer

oferei picture oferei · May 12, 2015

You can use action='append'. For example:

parser.add_argument('integer_list', type=int, action='append')

Pass multiple integer parameters:

curl http://api.example.com -d "integer_list=1" -d "integer_list=2" -d "integer_list=3"

And you will get a list of integers:

args = parser.parse_args()
args['integer_list'] # [1, 2, 3]

An invalid request will automatically get a 400 Bad Request response.