Skip to content

帮助您快速启动一个python网站api,为nextjs项目处理数据,并且将其部署到vercel!

License

Notifications You must be signed in to change notification settings

waitlistSawana/clean-flask-vercel-api

Repository files navigation

Clean Flask with Vercel

Deploy with Vercel

这个项目能让你迅速启用一个基于 Python 的后端接口,为你的网站提供基于 Python 服务器支持。欢迎⭐!

项目在 vercel 官方推出的模板 Flask Hello World 基础上进行改进,修复了一些bug。你也可以参考 Vercel 文档中关于 Python Runtime 的说明。

同时应用了 Flask 3.0 官方文档中 Flask Tutorial 中提到的方法。

项目有如下特性:

  • 修复了官方模板 pyhton 版本不适配的 bug -- 现在你可以在 vercel 上直接部署上线。

  • 增加蓝图文件 -- 提供可拓展性,通过 blueprint.py 文件增加新的路由,更清晰的结构、更具拓展性。

  • 方便的 Debug 文件 -- 现在你可以直接在 debug/apitest.http 文件中测试api,而不必到网页上测试

Demo

示例网站地址

exampl-site

直接部署生效

点击按钮立刻部署!

Deploy with Vercel

你也可以直接clone或者fork本项目,在自己的 vercel 上部署运行,并尝试访问。

这个例子使用了Web服务器网关接口(WSGI)与Flask结合,在Vercel上使用无服务器函数来处理请求。

主程序在 api/app.py

以下路由可以尝试访问:

/ # 首页路由
/get # GET 请求方法
/post # POST 请求方法
/double # 同时接收和处理 GET 和 POST 请求
/blueprint # 在 blueprint 文件中编写路由
/blueprint/g # blueprint 的更长路由 / 使用 g 参数
/lib # 在另一个文件夹创建函数并引用它

本地运行

vercel dev

npm i -g vercel
vercel dev

会出现几个设置问题,设置完毕后,你可以通过这个网址接收数据: http://localhost:3000.

Debug 测试

我们通过 REST CLIENT ( Huachao Mao ) 插件进行网站测试,熟悉它之后,你会知道它有多么方便!

debug/apitest.http 中使用。点击 ### name 下的 Send Request

关于配置

为了让项目可以被顺利访问,我主要改动了下面两个文件,如果你需要在这个项目的基础上拓展,请随意改动和调试下面的文件。

vercel.json

{
  "version": 2,
  "builds": [
    { "src": "api/app.py", "use": "@vercel/python", "config": { "maxLambdaSize": "15mb", "runtime": "python3.9" } },
    { "src": "api/blueprint.py", "use": "@vercel/python", "config": { "maxLambdaSize": "15mb", "runtime": "python3.9" } },
    { "src": "api/libhandler.py", "use": "@vercel/python", "config": { "maxLambdaSize": "15mb", "runtime": "python3.9" } },
    { "src": "api/lib/index_example.py", "use": "@vercel/python", "config": { "maxLambdaSize": "15mb", "runtime": "python3.9" } }
  ],
  "routes": [
    { "src": "/(.*)", "dest": "api/app.py" }
  ]
}

builds -- 为了让 python 文件顺利运行,你需要“标记”它们,告诉 vercel 怎么运行他们。{ "src": "api/app.py", "use": "@vercel/python", }。另外,记得将 runtime 设置为 python 3.9。

package.json

{
  "engines": {
    "node": "18.x"
  }
}

node 20.x 版本在vercel上无法识别 python 3.9,我们在这里指定 node 版本。

立即部署

Deploy with Vercel

关于我

我是一个正在学习和实现网站开发的开发者,希望在今年运营出一个 MRR $100 的作品。

如果你发现了什么问题、可改进的地方,或者只是想随意地聊聊天,都非常欢迎联系我!

即刻 @Sawana

X @HSawana9

About

帮助您快速启动一个python网站api,为nextjs项目处理数据,并且将其部署到vercel!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages