%global _empty_manifest_terminate_build 0 Name: python-flask-jsonschema-validator Version: 0.0.4 Release: 1 Summary: Validate Flask JSON request data with schema files and route decorators License: MIT URL: https://gitlab.com/vector.kerr/flask-jsonschema-validator Source0: https://mirrors.aliyun.com/pypi/web/packages/bd/b0/35f9f26d6efb6171da6236c07e5cbf73b66467c8954e983389d4656cbffa/flask-jsonschema-validator-0.0.4.tar.gz BuildArch: noarch Requires: python3-flask Requires: python3-jsonschema %description # Flask JSON Schema Validator Validate Flask JSON request data with schema files and route decorators. # Author Daniel 'Vector' Kerr () # License Refer to [LICENSE.txt](LICENSE.txt). # Installation pip install flask-jsonschema-validator # Sample Usage ## Python Code `main.py` ```python from flask import Flask, request, jsonify from flask_jsonschema_validator import JSONSchemaValidator app = Flask() JSONSchemaValidator( app = app, root = "schemas" ) # Define a normal flask route, and then apply the `validate` decorator. # Look for the `users.json` file, and use the `register` key as the schema source. @app.route( '/register', methods = [ 'POST' ] ) @app.validate( 'users', 'register' ) def routeRegister(): user = request.json return jsonify( user ) if __name__ == '__main__': app.run( port = 8080 ) ``` ## Schema File `schemas/users.json` ```json { "register": { "type": "object", "properties": { "name": { "type": "string", "minLength": 2, "maxLength": 100 }, "email": { "type": "string", "format": "email" }, "password": { "type": "string", "minLength": 8, "maxLength": 32 } }, "required": [ "name", "email", "password" ] } } ``` ## Run Server ```sh python main.py ``` ## POST Data to Server ```http POST /register HTTP/1.0 Content-Type: application/json Content-Length: 76 { "name": "fred", "email": "fred@foo.com", "password": "frediscool" } ``` ## Handling Validation Errors If the data validates correctly then the server will respond with the POST data as a JSON object. If the data fails to validate, a `jsonschema.ValidationError` exception will be raised. To handle the exception, you could register a Flask errorhandler. For example: ```python import jsonschema from flask import Response @app.errorhandler( jsonschema.ValidationError ) def onValidationError( e ): return Response( "There was a validation error: " + str( e ), 400 ) ``` %package -n python3-flask-jsonschema-validator Summary: Validate Flask JSON request data with schema files and route decorators Provides: python-flask-jsonschema-validator BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-flask-jsonschema-validator # Flask JSON Schema Validator Validate Flask JSON request data with schema files and route decorators. # Author Daniel 'Vector' Kerr () # License Refer to [LICENSE.txt](LICENSE.txt). # Installation pip install flask-jsonschema-validator # Sample Usage ## Python Code `main.py` ```python from flask import Flask, request, jsonify from flask_jsonschema_validator import JSONSchemaValidator app = Flask() JSONSchemaValidator( app = app, root = "schemas" ) # Define a normal flask route, and then apply the `validate` decorator. # Look for the `users.json` file, and use the `register` key as the schema source. @app.route( '/register', methods = [ 'POST' ] ) @app.validate( 'users', 'register' ) def routeRegister(): user = request.json return jsonify( user ) if __name__ == '__main__': app.run( port = 8080 ) ``` ## Schema File `schemas/users.json` ```json { "register": { "type": "object", "properties": { "name": { "type": "string", "minLength": 2, "maxLength": 100 }, "email": { "type": "string", "format": "email" }, "password": { "type": "string", "minLength": 8, "maxLength": 32 } }, "required": [ "name", "email", "password" ] } } ``` ## Run Server ```sh python main.py ``` ## POST Data to Server ```http POST /register HTTP/1.0 Content-Type: application/json Content-Length: 76 { "name": "fred", "email": "fred@foo.com", "password": "frediscool" } ``` ## Handling Validation Errors If the data validates correctly then the server will respond with the POST data as a JSON object. If the data fails to validate, a `jsonschema.ValidationError` exception will be raised. To handle the exception, you could register a Flask errorhandler. For example: ```python import jsonschema from flask import Response @app.errorhandler( jsonschema.ValidationError ) def onValidationError( e ): return Response( "There was a validation error: " + str( e ), 400 ) ``` %package help Summary: Development documents and examples for flask-jsonschema-validator Provides: python3-flask-jsonschema-validator-doc %description help # Flask JSON Schema Validator Validate Flask JSON request data with schema files and route decorators. # Author Daniel 'Vector' Kerr () # License Refer to [LICENSE.txt](LICENSE.txt). # Installation pip install flask-jsonschema-validator # Sample Usage ## Python Code `main.py` ```python from flask import Flask, request, jsonify from flask_jsonschema_validator import JSONSchemaValidator app = Flask() JSONSchemaValidator( app = app, root = "schemas" ) # Define a normal flask route, and then apply the `validate` decorator. # Look for the `users.json` file, and use the `register` key as the schema source. @app.route( '/register', methods = [ 'POST' ] ) @app.validate( 'users', 'register' ) def routeRegister(): user = request.json return jsonify( user ) if __name__ == '__main__': app.run( port = 8080 ) ``` ## Schema File `schemas/users.json` ```json { "register": { "type": "object", "properties": { "name": { "type": "string", "minLength": 2, "maxLength": 100 }, "email": { "type": "string", "format": "email" }, "password": { "type": "string", "minLength": 8, "maxLength": 32 } }, "required": [ "name", "email", "password" ] } } ``` ## Run Server ```sh python main.py ``` ## POST Data to Server ```http POST /register HTTP/1.0 Content-Type: application/json Content-Length: 76 { "name": "fred", "email": "fred@foo.com", "password": "frediscool" } ``` ## Handling Validation Errors If the data validates correctly then the server will respond with the POST data as a JSON object. If the data fails to validate, a `jsonschema.ValidationError` exception will be raised. To handle the exception, you could register a Flask errorhandler. For example: ```python import jsonschema from flask import Response @app.errorhandler( jsonschema.ValidationError ) def onValidationError( e ): return Response( "There was a validation error: " + str( e ), 400 ) ``` %prep %autosetup -n flask-jsonschema-validator-0.0.4 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-flask-jsonschema-validator -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.0.4-1 - Package Spec generated