跳转到主要内容

为Flask提供的Web API,易于使用,灵感来自Django DRF。

项目描述

## Django Rest Framework的Flask+Mongoengine类似物

[![构建状态](https://travis-ci.org/sallyruthstruik/flask_restframework.svg?branch=master)](https://travis-ci.org/sallyruthstruik/flask_restframework)
[![codecov](https://codecov.io/gh/sallyruthstruik/flask_restframework/branch/master/graph/badge.svg)](https://codecov.io/gh/sallyruthstruik/flask_restframework)
[![PyPI版本](https://badge.fury.io/py/flask_restframework.svg)](https://badge.fury.io/py/flask_restframework)

为Flask提供的简约且易于使用的RESTful框架。类似于Django Rest Framework for Flask

此项目允许您轻松编写序列化器/模型序列化器和REST资源。
此项目界面灵感来自Django-rest-framework (https://github.com/tomchristie/django-rest-framework)


## 安装

要安装,运行
`pip install flask_restframework`

## ToDo应用程序示例

完整代码可在examples/todo.py中找到

展示了使用

* ModelSerializer
* ModelResource
* 过滤器

首先,创建Flask应用和MongoEngine绑定

```python
from flask.app import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)

db = MongoEngine(app, config={
"MONGODB_DB": "todo"
})
```

接下来,我们创建2个模型 - ToDo代表一个待办事项,todoList。
每个todoList可以包含多个ToDo项

```python
from mongoengine import fields as dbfields

class ToDo(dbfields.EmbeddedDocument)
标题 = dbfields.StringField(必需=True)
正文 = dbfields.StringField(必需=True)
是否完成 = dbfields.BooleanField(默认=False)


class ToDoList(dbfields.Document)
标题 = dbfields.StringField(必需=True)

使用嵌入式字段用于待办事项。您还可以使用ReferenceField
todos = dbfields.EmbeddedDocumentListField(ToDo)
```

### 序列化器

用于序列化输出和解析输入数据时使用序列化器。
创建模型序列化器的最简单方法是使用ModelSerializer

```python
from flask_restframework import fields, BaseSerializer, ModelSerializer

class ToDoListSerializer(ModelSerializer)
class Meta
model = ToDoList
```

默认情况下,它将序列化模型的所有字段。
您可以在以下位置管理您要序列化的字段

* Meta.fields
* Meta.exclude_fields
* Meta.readonly_fields

### 资源

最后一步是创建资源并将它们绑定到应用程序
```python

class ToDoListResource(ModelResource)
queryset = ToDoList.objects.all()
serializer_class = ToDoListSerializer

```

使用路由器注册资源并启动应用程序

```python

router = DefaultRouter(app)
router.register("/todolist", ToDoListResource, "todolist")

if __name__ == "__main__"
app.run(port=3000)

```


### 服务器查询示例

首先,让我们创建一个新的待办事项列表,正文无效
```
POST /todolist
{}

响应
{
"title": [
"字段是必需的"
]
}
```

创建正常待办事项
```
POST /todolist
{
"title": "主列表",
"todos": [{
"title": "待办示例",
"body": "做些事情"
}]
}

响应
{
"id": "59370a0c32105b538798e200",
"title": "主列表",
"todos": [
{
"body": "做些事情",
"is_done": false,
"title": "待办示例"
}
]
}
```

更新待办事项,设置is_done
```
PUT /todolist/59370a0c32105b538798e200
{
"title": "主列表",
"todos": [{
"title": "待办示例",
"body": "做些事情",
"is_done": true
}]
}

响应
{
"id": "59370a0c32105b538798e200",
"title": "主列表",
"todos": [
{
"body": "做些事情",
"is_done": true,
"title": "待办示例"
}
]
}
```

## 更多功能


让我们添加一些更多功能

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

flask_restframework-0.2.1.tar.gz (3.3 MB 查看哈希)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面