没有项目描述
aiohttp-baseapi的Python项目详细描述
#aiohttp_-baseapi
这是一个微型框架,用于在aiohttp之上的高抽象级别上构建http api。
它允许以声明方式创建与模型类似jsonapi的http接口,并允许在任何级别上进行微调。
quick start
安装包
pip installaiohttp_baseapi
在当前目录中创建项目目录结构(它还包含两个示例应用程序)
baseapi start project
install the dependencies
pip install-r.meta/packages
configure postgres db connection
echo“database={'host':'localhost','port':5432,'database':'test','user':'test','password':'test','minsize':1,'maxsize':10}“>;/settings\u local.py
Create migrations
alembic revision--autogenerate-m“init”
Run migrations
alembic upgrade head
运行应用程序
python./main.py port=9000
你可以试试api。它包含“默认”应用程序——它只打印在“/”位置下的所有现有API方法。和“演示”应用程序-它包含两个示例模型
http-get:9000
http-post:9000/authors<;<;'{“data”:{“name”:“john”,“surname”:“smith”}'
http-post:9000/books<;<;'{“data”:{“category”:“fiction”,“name”:“birthday”,“is\u available”:true,“author\u id”:1}'
http-get:9000/books?filter[name]=birthday&;include=authors“
http-get:9000/books/1
http-put:9000/books/1<;<;'{“data”:{“is available”:false}'
http delete:9000/books/1
但是有一些不同。
可以使用“filter”get参数筛选检索到的信息。
可以按多个字段筛选:`filter[fieldname1]=foo&;filter[fieldname2]=bar`.
在这种情况下,响应的“fieldname1”值等于“foo”,而“fieldname2”值等于“bar”。
还可以筛选枚举所需值:`filter[fieldname]=foo,bar`.
在这种情况下,有一些值的“fieldname”等于“foo”或“bar”。
` fieldname2“降序”。
使用参数“fields”只能检索所需的字段。
例如:“fields=fieldname1,fieldname2”。在这种情况下,响应的值只有“fieldname1”和“fieldname2”字段。
可以使用“page”参数执行分页(限制和偏移)。
用法:`page[limit]=10&page[offset]=20`-标准分页(跳过20个项,返回最大值10)。
BR/>也有可能使用参数“包含”来附加相关实体。它将只影响包含的实体。
示例:
`filter[entity.fieldname]=foo`-filter;
`sort[entity]=fieldname`-sorting;
`fields[entity]=fieldname`-选择字段;
`page[entity.limit]=10`-分页。
可以使用json模式(可以从模型描述中自动生成)或手动进行验证。
默认的数据提供程序是database,但您可以使用任何想要的内容。
单元测试
运行:
$cd src
$make unit test
这是一个微型框架,用于在aiohttp之上的高抽象级别上构建http api。
它允许以声明方式创建与模型类似jsonapi的http接口,并允许在任何级别上进行微调。
quick start
安装包
pip installaiohttp_baseapi
在当前目录中创建项目目录结构(它还包含两个示例应用程序)
baseapi start project
install the dependencies
configure postgres db connection
echo“database={'host':'localhost','port':5432,'database':'test','user':'test','password':'test','minsize':1,'maxsize':10}“>;/settings\u local.py
Create migrations
alembic revision--autogenerate-m“init”
Run migrations
alembic upgrade head
运行应用程序
python./main.py port=9000
你可以试试api。它包含“默认”应用程序——它只打印在“/”位置下的所有现有API方法。和“演示”应用程序-它包含两个示例模型
http-get:9000
http-post:9000/authors<;<;'{“data”:{“name”:“john”,“surname”:“smith”}'
http-post:9000/books<;<;'{“data”:{“category”:“fiction”,“name”:“birthday”,“is\u available”:true,“author\u id”:1}'
http-get:9000/books?filter[name]=birthday&;include=authors“
http-get:9000/books/1
http-put:9000/books/1<;<;'{“data”:{“is available”:false}'
http delete:9000/books/1
但是有一些不同。
可以使用“filter”get参数筛选检索到的信息。
可以按多个字段筛选:`filter[fieldname1]=foo&;filter[fieldname2]=bar`.
在这种情况下,响应的“fieldname1”值等于“foo”,而“fieldname2”值等于“bar”。
还可以筛选枚举所需值:`filter[fieldname]=foo,bar`.
在这种情况下,有一些值的“fieldname”等于“foo”或“bar”。
` fieldname2“降序”。
使用参数“fields”只能检索所需的字段。
例如:“fields=fieldname1,fieldname2”。在这种情况下,响应的值只有“fieldname1”和“fieldname2”字段。
可以使用“page”参数执行分页(限制和偏移)。
用法:`page[limit]=10&page[offset]=20`-标准分页(跳过20个项,返回最大值10)。
BR/>也有可能使用参数“包含”来附加相关实体。它将只影响包含的实体。
示例:
`filter[entity.fieldname]=foo`-filter;
`sort[entity]=fieldname`-sorting;
`fields[entity]=fieldname`-选择字段;
`page[entity.limit]=10`-分页。
可以使用json模式(可以从模型描述中自动生成)或手动进行验证。
默认的数据提供程序是database,但您可以使用任何想要的内容。
单元测试
运行:
$make unit test