server (desktop)

Начиная с 2.0.0

Константы

Header : map =

74 элементов
{
  ACCEPT=Accept,
  ACCEPT_CHARSET=Accept-Charset,
  ACCEPT_ENCODING=Accept-Encoding,
  ACCEPT_LANGUAGE=Accept-Language,
  ACCEPT_RANGES=Accept-Ranges,
  ACCESS_CONTROL_ALLOW_CREDENTIALS=Access-Control-Allow-Credentials,
  ACCESS_CONTROL_ALLOW_HEADERS=Access-Control-Allow-Headers,
  ACCESS_CONTROL_ALLOW_METHODS=Access-Control-Allow-Methods,
  ACCESS_CONTROL_ALLOW_ORIGIN=Access-Control-Allow-Origin,
  ACCESS_CONTROL_EXPOSE_HEADERS=Access-Control-Expose-Headers,
  ACCESS_CONTROL_MAX_AGE=Access-Control-Max-Age,
  ACCESS_CONTROL_REQUEST_HEADERS=Access-Control-Request-Headers,
  ACCESS_CONTROL_REQUEST_METHOD=Access-Control-Request-Method,
  AGE=Age,
  ALLOW=Allow,
  AUTHORIZATION=Authorization,
  CACHE_CONTROL=Cache-Control,
  CLEAR_SITE_DATA=Clear-Site-Data,
  CONNECTION=Connection,
  CONTENT_DISPOSITION=Content-Disposition,
  CONTENT_ENCODING=Content-Encoding,
  CONTENT_LANGUAGE=Content-Language,
  CONTENT_LENGTH=Content-Length,
  CONTENT_LOCATION=Content-Location,
  CONTENT_RANGE=Content-Range,
  CONTENT_SECURITY_POLICY=Content-Security-Policy,
  CONTENT_TYPE=Content-Type,
  COOKIE=Cookie,
  CROSS_ORIGIN_EMBEDDER_POLICY=Cross-Origin-Embedder-Policy,
  CROSS_ORIGIN_OPENER_POLICY=Cross-Origin-Opener-Policy,
  CROSS_ORIGIN_RESOURCE_POLICY=Cross-Origin-Resource-Policy,
  DATE=Date,
  ETAG=ETag,
  EXPECT=Expect,
  EXPIRES=Expires,
  FROM=From,
  HOST=Host,
  IF_MATCH=If-Match,
  IF_MODIFIED_SINCE=If-Modified-Since,
  IF_NONE_MATCH=If-None-Match,
  IF_RANGE=If-Range,
  IF_UNMODIFIED_SINCE=If-Unmodified-Since,
  LAST_MODIFIED=Last-Modified,
  LINK=Link,
  LOCATION=Location,
  MAX_FORWARDS=Max-Forwards,
  ORIGIN=Origin,
  PRAGMA=Pragma,
  PROXY_AUTHENTICATE=Proxy-Authenticate,
  PROXY_AUTHORIZATION=Proxy-Authorization,
  RANGE=Range,
  REFERER=Referer,
  REFERRER_POLICY=Referrer-Policy,
  RETRY_AFTER=Retry-After,
  SEC_WEBSOCKET_KEY=Sec-WebSocket-Key,
  SERVER=Server,
  SET_COOKIE=Set-Cookie,
  STRICT_TRANSPORT_SECURITY=Strict-Transport-Security,
  TE=TE,
  TRAILER=Trailer,
  TRANSFER_ENCODING=Transfer-Encoding,
  UPGRADE=Upgrade,
  USER_AGENT=User-Agent,
  VARY=Vary,
  VIA=Via,
  WARNING=Warning,
  WWW_AUTHENTICATE=WWW-Authenticate,
  X_ACCEL_BUFFERING=X-Accel-Buffering,
  X_CONTENT_TYPE_OPTIONS=X-Content-Type-Options,
  X_FORWARDED_FOR=X-Forwarded-For,
  X_FORWARDED_PROTO=X-Forwarded-Proto,
  X_FRAME_OPTIONS=X-Frame-Options,
  X_HTTP_METHOD_OVERRIDE=X-HTTP-Method-Override,
  X_PERMITTED_CROSS_DOMAIN_POLICIES=X-Permitted-Cross-Domain-Policies
}

Функции

newServer(config = {}) — Инициализирует сервер, используя заданный конфиг. Возвращает ServerValue.

use std, server

newServer()
  .get("/", def(ctx) = ctx.json({"message": "Hello, world!"}))
  .start(8081)

serve(port = 8080, dir = ".") — Запускает сервер на указанном порту и хостит директорию dir

use server
serve(8083, "./public_html")

Типы

ServerValue

Функции

get(path, handler, roles...) — добавляет обработчик GET запросов

post(path, handler, roles...) — добавляет обработчик POST запросов

put(path, handler, roles...) — добавляет обработчик PUT запросов

patch(path, handler, roles...) — добавляет обработчик PATCH запросов

head(path, handler, roles...) — добавляет обработчик HEAD запросов

delete(path, handler, roles...) — добавляет обработчик DELETE запросов

options(path, handler, roles...) — добавляет обработчик OPTIONS запросов

error(status, handler, contentType = "*") — добавляет обработчик ошибок

exception(className, handler) — добавляет обработчик исключений

start(port = 8080, host = "") — Запускает сервер. Укажите port 0, чтобы запустить сервер на случайном порте

stop() — Останавливает работу сервера

ContextValue

Функции

appData(key) — получает значение appData по ключу key. См. config.appData

attribute(key, value = "") — получает или устанавливает аттрибут по ключу key

basicAuthCredentials() — возвращает простые данные авторизации, массив с двумя элементами — имя пользователя и пароль

extract(username, password) = ctx.basicAuthCredentials()

body() — возвращает тело ответа в виде строки

bodyAsBytes() — возвращает тело ответа в виде массива байт

characterEncoding() — возвращает кодировку символов из заголовка Content-Type, если возможно

cookie(name, value = "", maxAge = -1) — получает или устанавливает значение куки

contentLength() — возвращает длину контента в байтах

contentType(contentType = "") — получает или устанавливает заголовок Content-Type

contextPath() — возвращает путь контекста запроса

endpointHandlerPath() — возвращает путь обработчика совпавшего эндпоинта

formParam(key) — возвращает параметр формы

fullUrl() — возвращает полный адрес

handlerType() — возвращает тип текущего обработчика

header(name, value ="") — получает или устанавливает заголовок по названию name

host() — возвращает имя хоста

html(html) — устанавливает указанную html-строку в качестве результата. Также устанавливает заголовок Content-Type в text/html

ip() — возвращает IP адрес

isHttpMethod() — возвращает true, если запрос — http метод

isMultipartFormData() — возвращает true, если запрос — multipart/formdata

isMultipart() — возвращает true, если запрос — multipart

json(obj) — сериализует объект в json строку и устанавливает в качестве результата

jsonStream(obj) — сериализует объект в json потом и устанавливает в качестве результата

matchedPath() — возвращает совпавший путь запроса

method() — возвращает метод (GET, POST, ...)

path() — возвращает путь запроса

pathParam(key) — возвращает параметр пути запроса

port() — возвращает номер порта

protocol() — возвращает протокол

queryParam(key) — возвращает параметр запроса

queryString() — возвращает строку запроса

redirect(location, statusCode = 302) — редиректит на указанный путь с указанным статусом. По умолчанию, статус — 302 FOUND

removeCookie(name, path = "/") — удаляет куки по имени и пути

render(filePath, data = {}) — рендерит файл с указанными данными и устанавливает в качестве результата

result(value = "") — получает или устанавливает результат. value может быть строкой или массивом байт

status(status = ...) — получает или устанавливает код статуса. status может быть числовым кодом (404, 500) или строкой имени статуса ("NOT_FOUND", "INTERNAL_SERVER_ERROR")

statusCode() — возвращает код статуса ответа

scheme() — возвращает схему запроса

url() — возвращает адрес запроса

userAgent() — возвращает заголовок User-Agent

Config

{
  "webjars": true,
  "classpathDirs": ["dir1", "dir2"],
  "externalDirs": ["dir1", "dir2"],

  "asyncTimeout": 6_000,
  "defaultContentType": "text/plain",
  "etags": true,
  "maxRequestSize": 1_000_000,

  "defaultHost": "localhost",
  "defaultPort": 8000,

  "caseInsensitiveRoutes": true,
  "ignoreTrailingSlashes": true,
  "multipleSlashesAsSingle": true,
  "contextPath": "/",

  "basicAuth": ["user", "password"],
  "dev": true,
  "showBanner": false,
  "sslRedirects": true,
  "virtualThreads": true,
  "appData": {
    "key1": "value1",
    "key2": "value2"
  }
}