---
name: winow
description: Создаёт веб-приложения и маршруты на Winow (веб-сервер на OneScript и Autumn). Использовать при веб-сервере на OneScript, маршрутизации, контроллерах Winow.
---

# Winow

Минималистичный веб-сервер на нативном TCP и желудях Autumn. Чистый OneScript, без OneScript.web. Подходит для веб-приложений, микросервисов, моков API, отдачи статики и шаблонов.

Ограничения: нет HTTPS, не рассчитан на высокие нагрузки.

## Установка

```bash
opm install winow
```

Зависимость: фреймворк Autumn. Требуется `#Использовать autumn` и каталог с классами-контроллерами.

## Точка входа

```bsl
#Использовать autumn
#Использовать winow

Поделка = Новый Поделка();
Поделка.ЗапуститьПриложение();
```

По умолчанию сервер слушает localhost:3333. Классы контроллеров должны лежать в каталоге, подключённом через `#Использовать "путь"`, чтобы Autumn их загрузил.

## Контроллер и маршрут

Класс контроллера помечается `&Контроллер("/базовый/путь")`. Методы-обработчики — `&ТочкаМаршрута("имя")`. Имя точки маршрута становится частью URL: `/базовый/путь/имя`.

Минимальный пример (Hello World):

```bsl
&Контроллер("/")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ТочкаМаршрута("/")
Процедура Приветствие(Ответ) Экспорт
    Ответ.УстановитьТипКонтента("html");
    Ответ.ТелоТекст = СтрШаблон("<!DOCTYPE html><div>%1</div>", "Привет, мир!");
КонецПроцедуры
```

URL: `http://localhost:3333/`

## Параметры запроса

Сигнатура метода может включать `Запрос` и `Ответ`. GET-параметры — в `Запрос.ПараметрыИменные`.

Пример: `http://localhost:3333/greeter/getparams?name=Nikita&familia=ivanchenko`

```bsl
&Контроллер("/greeter")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ТочкаМаршрута("getparams")
Процедура Приветствие(Запрос, Ответ) Экспорт
    Ответ.УстановитьТипКонтента("html");
    Имя = Запрос.ПараметрыИменные["name"];
    Фамилия = Запрос.ПараметрыИменные["familia"];
    Ответ.ТелоТекст = СтрШаблон("<!DOCTYPE html><div>Имя: %1</div><div>Фамилия: %2</div>", Имя, Фамилия);
КонецПроцедуры
```

Именные параметры из строки запроса можно передавать по имени в параметры метода точки маршрута (см. документацию Winow).

## Ответ

- `Ответ.УстановитьТипКонтента("html")` — Content-Type.
- `Ответ.ТелоТекст = "..."` — тело ответа (строка).

Дополнительно: работа с телом POST, cookie, сессии, статические файлы, шаблоны (jinja-подобный синтаксис), SSE, WebSocket, базовая авторизация и роли — в [документации Winow](https://autumn-library.github.io/winow).

## Резюме

1. Точка входа: autumn + winow, Поделка, ЗапуститьПриложение.
2. Контроллер: класс с `&Контроллер("/путь")`.
3. Обработчик: метод с `&ТочкаМаршрута("имя")`, параметры `(Ответ)` или `(Запрос, Ответ) Экспорт`.
4. Ответ: УстановитьТипКонтента, ТелоТекст.
5. Запрос: ПараметрыИменные для GET.

Документация: [autumn-library.github.io/winow](https://autumn-library.github.io/winow).
