Бессерверная версия приложения с Vercel

  • используйте vercel.json для объявления времени выполнения и маршрутов, которые вы хотите использовать в своем приложении. Как правило, это будет один маршрут во время выполнения, но vercel поддерживает также rubygolangpython и nodejs
{
  "builds": [
    {
      "src": " **/*.html",
      "use": "@now/static"
    },
    {
      "src": "** /*.py",
      "use": "@now/python"
    },
    {
      "src": " **/*.js",
      "use": "@now/node"
    },
    {
      "src": "** /*.go",
      "use": "@now/go"
    }
  ],
  "routes": [
    {
      "src": "/",
      "dest": "public/index.html"
    },
    {
      "src": "/py",
      "dest": "api/hello.py"
    },
    {
      "src": "/flask",
      "dest": "api/flask.py"
    },
    {
      "src": "/ping",
      "dest": "api/ping.py"
    },
    {
      "src": "/js",
      "dest": "api/hello.js"
    },
    {
      "src": "/go",
      "dest": "api/app_go.go"
    }
  ]
}
  • создайте каталог с именем api. Это место, где будут находиться ваши обработчики маршрутов. Файлы простой и сложной логики в jsgopy или rb. Примеры логики приведены ниже.

hello.py

from http.server import BaseHTTPRequestHandler class handler(BaseHTTPRequestHandler):
  def do_GET(self):
    self.send_response(200)
    self.send_header('Content-type','text/plain')
    self.end_headers()
    message = 'Hello from Python from a Serverless Function!'
    self.wfile.write(message.encode()) 
    return

hello.js

module.exports = (req, res) => {
    res.json({
        body: req.body,
        query: req.query,
        cookies: req.cookies
    })
}
  • в случае, если вы используете modulespackages, вы можете объявить то же самое в requirements.txt файле (для python) и package.json (для nodejs)

Run в среде development

  • функция run – vercel dev
  • nodejs: функция действует в http://localhost:3000/js
  • python: функция действует в http://localhost:3000/py

Если это кажется слишком низкоуровневым, у вас также могут быть такие модули, как bottleflask для работы с сервером с меньшим кодом python (установить модули локально, настроить venv и установить flask (pip install flask) и соответствующим образом изменить код. Пример показан ниже)

flask.py

from flask import Flask, Response
   app = Flask( __name__ )
   def catch_all(path): 
     return Response("<h1>Flask</h1><p>You visited: /%s</p>" % (path), mimetype="text/html")

Также обратите внимание, что вы можете писать код на rust, deno, php и т.д. с помощью времени выполнения, построенного сообществом.

Run в stage или в prod среде

  • Запустите vercel или vercel -- prod чтобы получить доступ к конечным точкам internet в своей учетной записи vercel

Ответить