No project description provided
Project description
flask-reqparser-py
Overview
The Flask web framework provides access to request parameters via flask.request.args
for GET
requests and via flask.request.form for PUT
and POST
requests.
Requiring certain parameters be present for an endpoint, or parsing parameters as custom types, necessitates extra logic to process values from the aforementioned
dictionaries and is error-prone. However, API endpoints can act much like command line interfaces, and Python has solved that problem
fairly will with the argparse library. flask-reqparser-py
exposes a RequestParser
class
that allows you to define a parser for request arguments, and access them like regular command line arguments.
Installation
Install from PyPi (preferred method)
pip install lc-flask-reqparser
Install from GitHub with Pip
pip install git+https://github.com/libcommon/flask-reqparser-py.git@vx.x.x#egg=lc_flask_reqparser
where x.x.x
is the version you want to download.
Install by Manual Download
To download the source distribution and/or wheel files, navigate to
https://github.com/libcommon/flask-reqparser-py/tree/releases/vx.x.x/dist
, where x.x.x
is the version you want to install,
and download either via the UI or with a tool like wget. Then to install run:
pip install <downloaded file>
Do not change the name of the file after downloading, as Pip requires a specific naming convention for installation files.
Dependencies
flask-reqparser-py
depends on, and is designed to work with, the
Flask framework. Only Python versions >= 3.6 are officially supported.
Getting Started
The syntax for defining a RequestParser
is almost identical to an ArgumentParser
, except that all arguments should be
defined as positional, and it supports the builder pattern for adding arguments. RequestParser
will take the positional
definitions and transform them to act like optional arguments (optional arguments in argparse
can still have required=True
).
from typing import List
from flask import Flask
from lc_flask_reqparser import RequestParser
app = Flask(__name__)
def CommaSeparatedList(arg: str) -> List[str]:
"""Convert string representation of CSV to list of str."""
return arg.split(",")
@app.route("/api/describe/person")
def describe_person():
"""API endpoint to describe information about a person."""
parser = (RequestParser()
.add_argument("name", required=True)
.add_argument("nicknames", type=CommaSeparatedList))
args, _ = parser.parse_args()
// use args.name or args.nicknames list to lookup user in database
// and return information in JSON form.
Note that RequestParser.parse_args
returns a tuple containing the Namespace
with defined arguments, as well as
a list of the remaining (undefined) arguments. If an API endpoint only cares about defined arguments, it can safely
ignore the second element of the tuple like the example above.
Contributing/Suggestions
Contributions and suggestions are welcome! To make a feature request, report a bug, or otherwise comment on existing functionality, please file an issue. For contributions please submit a PR, but make sure to lint, type-check, and test your code before doing so. Thanks in advance!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file lc_flask_reqparser-0.1.3.tar.gz
.
File metadata
- Download URL: lc_flask_reqparser-0.1.3.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 611742afa421711db58db77bc309bd2a679da3c3cda73bed7639b5518294b1ca |
|
MD5 | be9580ad18ed62c3432a3929d4b43465 |
|
BLAKE2b-256 | 86e559885dbbb6e80414dce69de7c8de30ce7d8622469f9ab7dcf34d353a30e2 |
File details
Details for the file lc_flask_reqparser-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: lc_flask_reqparser-0.1.3-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2dc3f46a5c9d8b74a99f66934b67d9cea303212f6796633ef41d4692ba5db62 |
|
MD5 | 017abe189adf959645ec0bad990b9d59 |
|
BLAKE2b-256 | cba26104e05ab2b1448bd81f603566f18941417e8bca53d82ee9e3196bd91057 |