Featured image of post Vercel部署API

Vercel部署API

项目结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
.
│.gitignore
│vercel.json
├─.vercel
│  project.json
│  README.txt
├─api
│  acg.py
│  test.py
└─img
    └─acg
        001.png
        002.png
        ...
        099.png
        100.png

在项目根目录下创建"api"文件夹,在api中创建可执行文件(如index.py),则该文件会被尝试执行,如果将可执行文件直接放在根目录,则会被当作文本文件读取.

文件示例

acg.py文件内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from http.server import BaseHTTPRequestHandler
import random
class handler(BaseHTTPRequestHandler):
    def do_GET(self):
        random_number = random.randint(1, 100)
        formatted_number = "{:03d}".format(random_number)
        redirect_url = f'https://api.night1918.top/img/acg/{formatted_number}.png'
        self.send_response(302)
        self.send_header('Location', redirect_url)
        self.end_headers()
        return

test.py文件内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from http.server import BaseHTTPRequestHandler
class handler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.headers.get('Custom-Header') == 'luck':
            # 只有当请求头为'luck'时,会返回指定值,否则返回403
            self.send_response(200)
            self.send_header('Content-type', 'text/plain')
            self.end_headers()
            self.wfile.write("lucky boy".encode())
        else:
            self.send_error(403)
        return

配置文件

在项目根目录下创建文件vercel.json,通过该文件可以配置运行环境,自定义路由等.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "routes": [
    {
      "src": "/acg",
      "dest": "/api/acg"
    },
    {
      "src": "/test",
      "dest": "/api/test"
    }
  ]
}

例如上面的json代码指定使用/api/acg.py文件执行/acg路由的请求.

部署

在项目根目录下打开命令行,执行vercel --prod即可将项目部署到vercel中,访问https://<你的域名>/api/acg即可看到效果

本博客已运行
发表了6篇文章 · 总计11.99k字
使用 Hugo 构建
主题 StackJimmy 设计