项目结构
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
即可看到效果