Skip to main content

Flask-Protobuf is a Python package that provides integration between Flask and Protocol Buffers (protobuf). It allows you to easily handle incoming protobuf messages in your Flask application.

Project description

Flask-Protobuf

Flask-Protobuf is a Python package that provides integration between Flask and Protocol Buffers (protobuf). It allows you to easily handle incoming protobuf messages in your Flask application.

Installation

Install Flask-Protobuf with pip

  pip install flask-protobuf

Dependencies

Aside from Flask, you need to have protobuf installed.

  pip install protobuf

Features

  • Receive Serialized Protobuf Message

  • Allows seemless migration from JSON to Protobuf. No need to modify your route functions.

    • If you wish to read the data as JSON without worrying about deserializing the protobuf message. This is because FlaskProtobuf handles the conversion and converts the request.data for you. You can set the parse_dict to True in 2 ways:
      • globally

        fb = FlaskProtobuf(app,parse_dict=True)
        
      • per decorator instance

        fb = FlaskProtobuf(app)
        
        @app.route('/add-branch', methods=['POST'])
        @fb(branch)
        def index():
            pass
        
      • Default:

        By default, if you do not declare the parse_dict parameter, the request.data will not be converted to dict and can be read as a protobof message.

  • Built in Response Messages

    • If it encounters an error parsing your protobuf message, the response can tell what is the expected protobuf message format.
    • Example HTTP Response for errors

      HTTP CODE: 500
      
      {
      "expxected_message":"Employees",
      "fields":{
          "position":"TYPE_ENUM",
          "id":"TYPE_INT32",
          "full_name":"TYPE_STRING",
          "email":"TYPE_STRING"
          }
      "message":"The message received was not the expected message in the protobuf decorator"
      }
      

Usage/Examples

from flask import Flask as flask,request,jsonify
from flask_protobuf import flask_protobuf as FlaskProtobuf
from Employees_pbs import Employees as employees, Branch as branch


#declare Flask app
app = flask(__name__)
#declare FlaskProtobuf
fb = FlaskProtobuf(app,parse_dict=True)



@app.route('/add-branch', methods=['POST'])
@fb(branch) #provide the message you are expecting
def index():
    print(request.data)
    branch = branch()
    b.id = 1
    b.country = "PH"
    return b.SerializeToString() #can return a protobuff message

@app.route('/employees', methods=['POST'])
@fb(employees) #provide the message you are expecting
def index():
    employees_array = request.data
    for employee in employees_array #sample protobuff REPEATED Type
        print(employee)
    
    return jsonify({"status":"SUCCESS"}) #can return other formats

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

flask_protobuf-0.1.3-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file flask_protobuf-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_protobuf-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fc284bedc8f8b6a10b89e0888c302aceb7e22a53bf77c7c2686e4edc60e36636
MD5 cc17da98653649ece81671256bb2c1d5
BLAKE2b-256 a8c65400d1ec13a8e16fe8028c9286e8c6c2f68cfacd05697890dc9350a790d9

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