Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lc_flask_reqparser-0.1.3.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

lc_flask_reqparser-0.1.3-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

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

Hashes for lc_flask_reqparser-0.1.3.tar.gz
Algorithm Hash digest
SHA256 611742afa421711db58db77bc309bd2a679da3c3cda73bed7639b5518294b1ca
MD5 be9580ad18ed62c3432a3929d4b43465
BLAKE2b-256 86e559885dbbb6e80414dce69de7c8de30ce7d8622469f9ab7dcf34d353a30e2

See more details on using hashes here.

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

Hashes for lc_flask_reqparser-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b2dc3f46a5c9d8b74a99f66934b67d9cea303212f6796633ef41d4692ba5db62
MD5 017abe189adf959645ec0bad990b9d59
BLAKE2b-256 cba26104e05ab2b1448bd81f603566f18941417e8bca53d82ee9e3196bd91057

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page