# django-apis

Django简易json api接口框架。使用Django Form做接口参数验证。


## 安装

```
pip install django-apis
```

## 使用

### 简单的接口开发

- 所有视图参数按django标准，添加request或其它路径参数。
- 可以定义Form来完成请求参数的校验。
    - 在检验不通过的情况下，抛出`django_apis.exceptions.InputValidationError`。
    - `django_apis.exceptions.InputValidationError`会把django的异常信息转化为文本格式。
- `apiview`中`methods`参数表示允许的HTTP请求类型。
    - 可以是字符串，如：`"get"`。
    - 也可以是字符串数组，如：`["get", "post"]`。
    - 大小写均可。


*forms.py*
```
from django.forms import Form
from django.forms.fields import CharField


class EchoInput(Form):
    msg = CharField(max_length=16, required=True)
```

*views.py*
```
from django_apis.views import get_apiview
from django_apis.views import get_json_payload
from django_apis.exceptions import InputValidationError
from .forms import EchoInput

apiview = get_apiview()


@apiview(methods="GET")
def ping(request):
    return "pong"


@apiview(methods="POST")
def echo(request):
    payload = get_json_payload(request)
    form = EchoInput(payload)
    if not form.is_valid():
        raise InputValidationError(form)
    return form.cleaned_data["msg"]


@apiview(methods="GET")
def getRequestInfo(request):
    result = {}
    for key, value in request.META.items():
        if isinstance(value, str):
            result[key] = value
    return result

```

## 配置项

- DJANGO_APIS_ALLOWED_METHODS
- DJANGO_APIS_APIVIEW
- DJANGO_APIS_ENABLE_REQUEST_LOG
- DJANGO_APIS_REQUEST_LOG_NAME

## 版本记录

### v0.1.4

- 版本首发。

## v0.1.5

- 添加`http_bearer_auth_protect`方法。
