无服务器域的web框架

minik的Python项目详细描述


circlepypi versionapache license

使用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 服务。
  • 如何构建和部署lambda函数的灵活性。我不想 我的框架来为我规定这些过程。我想拥有他们!
  • 在安装web框架时,我只想获得框架。我不知道 需要任何其他工具或任何其他基于流程的工作流。
  • 使用微结构时,我负责配置 需要将lambda函数与其终结点关联。

这个库的特性应该完全由 商业需求。到目前为止,最小的方法已经足够我们的团队 使用aws服务编写和公开api。

只是框架

使用minik时需要注意的事项:

  • 当在lambda函数中使用时,您负责包含源 你的.zip工件中的minik代码。出于包装目的,我们建议使用 Juniper
  • 与其他框架(如flask或django)不同,这里使用decorator是 足以定义web应用程序的路由,在minik中,您负责 用于将lambda函数链接到api网关。我们建议使用 SAM模板。
  • minik不包括本地开发服务器!出于测试目的,您可以 使用sam包sam deploy将lambda部署到aws。对于本地 部署目的您可以使用sam local

快速启动

minik只是构建无服务器api所需的一部分。如果你 很想了解更多关于最佳实践的信息以及如何开始 微结构,结账getting started 引导。

quickstart使用了一个非常简单的示例,它包含在这个代码库中,如下所示 一种强调框架好处的方法。

贡献

对于建立一个开发环境和如何使 对minik的贡献,请参见contributing guidelines

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java提高机器学习Rest服务性能   java反转字符的字符串顺序,并使用构造函数将其放入LinkedList   继承为什么Java不支持在方法签名中添加“throws”?   执行DDL alter table if exists任务时发生java错误。城市   java在eclipse中使用CREATETXT并打包在jar中   java AES256与3DES 256密钥检测   具有两个相同类型字段的java JPA实体   java Webapp日志记录设置被忽略   java KeyEventDispatcher可以在一个应用程序中工作,但不能在另一个应用程序中工作   带有Swing和OpenJDK的java PinchZoom   未涉及java AspectJ注释切入点(对于任何注释类型)   java如何在FuseBAI中获取日志文件详细信息   java在Linux上将wstring转换为jstring