Skip to main content

Library for build json API's

Project description

PyPI PyPI - Python Version Codecov Build GitHub Requirements Status

Build json API fast and simple

Key Features

  • Provides simple API.

  • Supports serialize/deserialize class objects to/from dictionary.

  • Field type may be the same with model type (self_base Field attribute)

Installation

pip install botapi

Getting started

Let’s take some data:

order = {
    'user': {
        'name': 'Jack',
        'surname': 'Doe',
        'phone': '123456789',
    },
    'date': '2020-12-10 10:12:13',
    'paid': True,
    'items': [
        {
            'name': 'product 1',
            'id': 1,
            'quantity': 2,
            'subtotal': 10.5
        },
        {
            'name': 'product 2',
            'id': 2,
            'quantity': 1,
            'subtotal': 5
        }
    ]
}

Write models:

from datetime import datetime

from botapi import Model, Field, ListField

class Item(Model):
    name = Field()
    item_id = Field(alias='id')


# inherit model
class CartItem(Item):
    quantity = Field(base=int)
    subtotal = Field()


class UserModel(Model):
    name = Field()
    surname = Field()
    phone = Field()


class OrderModel(Model):
    user = Field(base=UserModel)
    paid = Field(base=bool, default=False)
    cart = ListField(item_base=CartItem, default=[], alias='items')
    order_date = DateTimeField()

Deserialize and work with data:

# deserialize data
obj = OrderModel(**order)

# work with data
obj.user.name = 'John'
obj.paid = True
obj.cart[0].subtotal = 12.5
obj.order_date = datetime.now()

Serialize model:

# may be you want to add some data
comment = 'call before delivery'

# serialize data
print(obj.serialize(data_to_update={'comment': comment}))

Output:

{'user': {'surname': 'Doe', 'phone': '123456789', 'name': 'John'}, 'paid': True, 'items': [{'quantity': 2, 'subtotal': 12.5, 'id': 1, 'name': 'product 1'}, {'quantity': 1, 'subtotal': 5, 'id': 2, 'name': 'product 2'}], 'order_date': '2020-12-22 12:04:39', 'comment': 'call before delivery'}

Requirements

License

BotAPI is distributed under the Apache License 2.0 license.

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

botapi-1.2.1.tar.gz (8.5 kB view hashes)

Uploaded Source

Built Distribution

botapi-1.2.1-py3-none-any.whl (12.3 kB view hashes)

Uploaded Python 3

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