Перейти к содержимому

Hello World

Ваше первое приложение на Wippy — простой HTTP API, возвращающий JSON.

Минимальный веб-API с одним эндпоинтом:

GET /hello → {"message": "hello world"}
hello-world/
├── wippy.lock # Генерируемый lock-файл
└── src/
├── _index.yaml # Определения записей
└── hello.lua # Код обработчика
Окно терминала
mkdir hello-world && cd hello-world
mkdir src

Создайте src/_index.yaml:

version: "1.0"
namespace: app
entries:
# HTTP-сервер
- name: gateway
kind: http.service
addr: ":8080"
lifecycle:
auto_start: true
# Роутер
- name: api
kind: http.router
meta:
server: app:gateway
prefix: /
# Функция-обработчик
- name: hello
kind: function.lua
source: file://hello.lua
method: handler
modules:
- http
# Эндпоинт
- name: hello.endpoint
kind: http.endpoint
meta:
router: app:api
method: GET
func: app:hello
path: /hello

Четыре записи работают вместе:

  1. gateway — HTTP-сервер, слушающий порт 8080
  2. api — роутер, привязанный к gateway через meta.server
  3. hello — Lua-функция, обрабатывающая запросы
  4. hello.endpoint — маршрутизирует GET /hello на функцию

Создайте src/hello.lua:

local http = require("http")
local function handler()
local res = http.response()
res:set_content_type(http.CONTENT.JSON)
res:set_status(http.STATUS.OK)
res:write_json({message = "hello world"})
end
return {
handler = handler
}

Модуль http предоставляет доступ к объектам запроса/ответа. Функция возвращает таблицу с экспортируемым методом handler.

Окно терминала
# Генерация lock-файла из исходников
wippy init
# Запуск рантайма (-c для цветного вывода в консоль)
wippy run -c

Вы увидите вывод:

╦ ╦╦╔═╗╔═╗╦ ╦ Adaptive Application Runtime
║║║║╠═╝╠═╝╚╦╝ v0.1.20
╚╩╝╩╩ ╩ ╩ by Spiral Scout
0.00s INFO run runtime ready
0.11s INFO core service app:gateway is running {"details": "service listening on :8080"}
Окно терминала
curl http://localhost:8080/hello

Ответ:

{"message":"hello world"}
  1. gateway принимает TCP-соединение на порту 8080
  2. Роутер api сопоставляет префикс пути /
  3. hello.endpoint сопоставляет GET /hello
  4. Функция hello выполняется и записывает JSON-ответ
КомандаОписание
wippy initГенерация lock-файла из src/
wippy runЗапуск рантайма из lock-файла
wippy run -cЗапуск с цветным выводом в консоль
wippy run -vЗапуск с подробным debug-логированием
wippy run -sЗапуск в тихом режиме (без логов в консоль)
  • Echo Service — обработка параметров запроса
  • Task Queue — REST API с фоновой обработкой
  • HTTP-роутер — паттерны маршрутизации