Metadata-Version: 2.1
Name: kwikapi-django
Version: 0.2.6
Summary: Quickest way to build powerful HTTP APIs in Python
Home-page: https://github.com/deep-compute/kwikapi.django
Author: Deep Compute, LLC
Author-email: contact@deepcompute.com
License: MIT License
Download-URL: https://github.com/deep-compute/kwikapi.django/tarball/0.2.6
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
Requires-Dist: django (==1.11.23)

# kwikapi.django

Quickly build API services to expose functionality in Python. `kwikapi.django` was built by using the functionality of KwikAPI and Django web server.

## Installation

```bash
$ pip3 install kwikapi[django]
```

## Usage

### Create a Django project

(Ref: https://docs.djangoproject.com/en/1.11/intro/tutorial01/)

```bash
$ django-admin startproject django_kwikapi
```

### Create an app in Django

```bash
$ python3 manage.py startapp polls
```

### Add your app name to settings.py

```python
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
]
```
### Make sure the contents of files be like this

/django_kwikapi/django_kwikapi/urls.py

```python
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('polls.urls'))
]
```

/django_kwikapi/polls/urls.py

```python
from django.conf.urls import url, include

from . import views
from kwikapi.django import RequestHandler

urlpatterns = [
    url(r'api/', RequestHandler(views.api).handle_request),
]
```

### Example of django views

/django_kwikapi/polls/views.py

```python
from django.http import HttpResponse
from kwikapi import API
from logging import Logger

class BaseCalc():
    def add(self, a: int, b: int) -> int:
        return a + b

    def subtract(self, a: int, b: int) -> int:
        return a - b

class StandardCalc():
    def multiply(self, a: int, b: int) -> int:
        return a * b

    def divide(self, a: int, b: int) -> float:
        return a / b

api = API(log=Logger, default_version='v1')
api.register(BaseCalc(), 'v1')
api.register(StandardCalc(), "v2")
```

### Start Django

```bash
$ python3 manage.py makemigrations
$ python3 manage.py migrate
$ python3 manage.py runserver 8888
```

### Make API request

```bash
$ curl "http://localhost:8888/api/v1/add?a=10&b=10"
```

> To know how to use all features, please refer KwikAPI documentation https://github.com/deep-compute/kwikapi/blob/master/README.md


