无服务器域的web框架
minik的Python项目详细描述
使用aws lambda函数和api网关,minik将作为框架 这有助于在无服务器空间中进行开发。
安装
安装最新版本:
>>> pip install minik ✨?✨
只支持python 3.6+。
简单示例
这是最基本的形式;老实说,这是唯一的形式。这就是你的羔羊 函数应该如下所示:
fromminik.coreimportMinik,BadRequestErrorapp=Minik()@app.route('/hello/{name}')defhello_view(name:str):ifname=='FINDME':# Returns a 400 status code with the message as the body.raiseBadRequestError(msg='This is not a supported name.')# A simple way of getting the current request as json.request_payload=app.request.json_bodyreturn{'hello':name}
http方法
使用minik还可以为给定视图指定http方法。如果你不知道 定义方法,默认情况下允许每个http方法。
fromminik.coreimportMinikapp=Minik()@app.route('/events/{location}')defevents_view(location:str):# This route will be invoked for GET, POST, PUT, DELETE...return{'data':['granfondo MD','Silver Spring Century']}@app.route('/events',methods=['POST','PUT'])defcreate_event_view():create_event(app.request.json_body)return{'result':'complete'}
如果视图与单个http方法相关联,则可以使用decorator 版本。
fromminik.coreimportMinikapp=Minik()@app.get('/events/{location}')defget_view(location:str):return{'data':['granfondo MD','Silver Spring Century']}@app.post('/events')defpost_view():create_event(app.request.json_body)return{'result':'complete'}
路线参数验证
minik使用function annotations来验证路由的值。如果类型 所需参数中的一个无效,minik将以404 not found响应 状态代码。
@app.route('/articles/{author}/{year}/')defget_articles_view(author:str,year:int):# Type conversion: isinstance(author, str) and isinstance(year, int)return{'author_name':author,'year':year}
要了解更多信息,请查看route validation页面。
自定义标题
为了更新http响应的值,minik在 应用程序级别。默认情况下,minik将创建一个状态代码为 和一组默认标题。标题包含默认内容类型 application/json的值。
例如,要在视图中设置cors头并更改内容类型,请 视图如下:
app=Minik()@app.get('/articles/{author}/{year}/')defget_articles_view(author:str,year:int):app.response.headers={"Content-Type":"Content-Type":"text/html; charset=utf-8","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET","Access-Control-Allow-Headers":"Content-Type,X-Amz-Date","Authorization":"X-Api-Key,X-Amz-Security-Token"}returnf"A very short article by {author}"
调试模式
对于未处理的异常,minik将使用500状态代码和 一般性错误消息。从响应中获取更多详细信息,包括堆栈 跟踪并获取有关异常的信息,以调试模式运行应用程序。
默认情况下,调试模式设置为false。
app=Minik(debug=True)
在调试模式下初始化应用程序将把堆栈跟踪中继回使用者。
动机
这个框架背后的团队正在采用一组非常少的特性来增强 并在无服务器空间中简化Web开发。这就是生意 鼓励我们建立minik的需求:
- 能够使用熟悉的(类似烧瓶的)语法使用无服务器编写api 服务。
- 在安装web框架时,我只想获得框架。我不知道 需要任何其他工具或任何其他基于流程的工作流。
- 使用微结构时,我负责配置 需要将lambda函数与其终结点关联。
这个库的特性应该完全由 商业需求。到目前为止,最小的方法已经足够我们的团队 使用aws服务编写和公开api。
只是框架
使用minik时需要注意的事项:
快速启动
minik只是构建无服务器api所需的一部分。如果你 很想了解更多关于最佳实践的信息以及如何开始 微结构,结账getting started 引导。
quickstart使用了一个非常简单的示例,它包含在这个代码库中,如下所示 一种强调框架好处的方法。
贡献
对于建立一个开发环境和如何使 对minik的贡献,请参见contributing guidelines。