为Flask提供的Web API,易于使用,灵感来自Django DRF。
项目描述
## Django Rest Framework的Flask+Mongoengine类似物
[](https://travis-ci.org/sallyruthstruik/flask_restframework)
[](https://codecov.io/gh/sallyruthstruik/flask_restframework)
[](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": "待办示例"
}
]
}
```
## 更多功能
让我们添加一些更多功能
[](https://travis-ci.org/sallyruthstruik/flask_restframework)
[](https://codecov.io/gh/sallyruthstruik/flask_restframework)
[](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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9cbde51bbeeb07f35d8cfc43cfc546502cd997971422a8f146d17041da0a704e |
|
MD5 | 9d00a4c2fee59a15d460e9924ae11453 |
|
BLAKE2b-256 | f55703b07941ce71bdaa56175a5eb00c8a1f294fedd910e18375f89e0b2859e5 |