$npx -y skills add yellow-hammer/skills-onescript --skill winowСоздаёт веб-приложения и маршруты на Winow (веб-сервер на OneScript и Autumn). Использовать при веб-сервере на OneScript, маршрутизации, контроллерах Winow.
| 1 | # Winow |
| 2 | |
| 3 | Минималистичный веб-сервер на нативном TCP и желудях Autumn. Чистый OneScript, без OneScript.web. Подходит для веб-приложений, микросервисов, моков API, отдачи статики и шаблонов. |
| 4 | |
| 5 | Ограничения: нет HTTPS, не рассчитан на высокие нагрузки. |
| 6 | |
| 7 | ## Установка |
| 8 | |
| 9 | ```bash |
| 10 | opm install winow |
| 11 | ``` |
| 12 | |
| 13 | Зависимость: фреймворк Autumn. Требуется `#Использовать autumn` и каталог с классами-контроллерами. |
| 14 | |
| 15 | ## Точка входа |
| 16 | |
| 17 | ```bsl |
| 18 | #Использовать autumn |
| 19 | #Использовать winow |
| 20 | |
| 21 | Поделка = Новый Поделка(); |
| 22 | Поделка.ЗапуститьПриложение(); |
| 23 | ``` |
| 24 | |
| 25 | По умолчанию сервер слушает localhost:3333. Классы контроллеров должны лежать в каталоге, подключённом через `#Использовать "путь"`, чтобы Autumn их загрузил. |
| 26 | |
| 27 | ## Контроллер и маршрут |
| 28 | |
| 29 | Класс контроллера помечается `&Контроллер("/базовый/путь")`. Методы-обработчики — `&ТочкаМаршрута("имя")`. Имя точки маршрута становится частью URL: `/базовый/путь/имя`. |
| 30 | |
| 31 | Минимальный пример (Hello World): |
| 32 | |
| 33 | ```bsl |
| 34 | &Контроллер("/") |
| 35 | Процедура ПриСозданииОбъекта() |
| 36 | КонецПроцедуры |
| 37 | |
| 38 | &ТочкаМаршрута("/") |
| 39 | Процедура Приветствие(Ответ) Экспорт |
| 40 | Ответ.УстановитьТипКонтента("html"); |
| 41 | Ответ.ТелоТекст = СтрШаблон("<!DOCTYPE html><div>%1</div>", "Привет, мир!"); |
| 42 | КонецПроцедуры |
| 43 | ``` |
| 44 | |
| 45 | URL: `http://localhost:3333/` |
| 46 | |
| 47 | ## Параметры запроса |
| 48 | |
| 49 | Сигнатура метода может включать `Запрос` и `Ответ`. GET-параметры — в `Запрос.ПараметрыИменные`. |
| 50 | |
| 51 | Пример: `http://localhost:3333/greeter/getparams?name=Nikita&familia=ivanchenko` |
| 52 | |
| 53 | ```bsl |
| 54 | &Контроллер("/greeter") |
| 55 | Процедура ПриСозданииОбъекта() |
| 56 | КонецПроцедуры |
| 57 | |
| 58 | &ТочкаМаршрута("getparams") |
| 59 | Процедура Приветствие(Запрос, Ответ) Экспорт |
| 60 | Ответ.УстановитьТипКонтента("html"); |
| 61 | Имя = Запрос.ПараметрыИменные["name"]; |
| 62 | Фамилия = Запрос.ПараметрыИменные["familia"]; |
| 63 | Ответ.ТелоТекст = СтрШаблон("<!DOCTYPE html><div>Имя: %1</div><div>Фамилия: %2</div>", Имя, Фамилия); |
| 64 | КонецПроцедуры |
| 65 | ``` |
| 66 | |
| 67 | Именные параметры из строки запроса можно передавать по имени в параметры метода точки маршрута (см. документацию Winow). |
| 68 | |
| 69 | ## Ответ |
| 70 | |
| 71 | - `Ответ.УстановитьТипКонтента("html")` — Content-Type. |
| 72 | - `Ответ.ТелоТекст = "..."` — тело ответа (строка). |
| 73 | |
| 74 | Дополнительно: работа с телом POST, cookie, сессии, статические файлы, шаблоны (jinja-подобный синтаксис), SSE, WebSocket, базовая авторизация и роли — в [документации Winow](https://autumn-library.github.io/winow). |
| 75 | |
| 76 | ## Резюме |
| 77 | |
| 78 | 1. Точка входа: autumn + winow, Поделка, ЗапуститьПриложение. |
| 79 | 2. Контроллер: класс с `&Контроллер("/путь")`. |
| 80 | 3. Обработчик: метод с `&ТочкаМаршрута("имя")`, параметры `(Ответ)` или `(Запрос, Ответ) Экспорт`. |
| 81 | 4. Ответ: УстановитьТипКонтента, ТелоТекст. |
| 82 | 5. Запрос: ПараметрыИменные для GET. |
| 83 | |
| 84 | Документация: [autumn-library.github.io/winow](https://autumn-library.github.io/winow). |