本文へ移動
mie リファレンス
REPL Playground

std:http リファレンス

@import 'std:http' で取得する HTTP 共通型モジュール。Request / Response / Handler を型メンバーとして export し、std:http/clientstd:http/server と将来のルーター・middleware ライブラリが形を共有する。

Handler

{ Request | Response }

Request 1 個を受け取り Response を返す関数型。std:http/server の serve が
要求する契約で、ルーター・middleware ライブラリがこの型に依存して書ける。

>>> http := @import "std:http"
>>> handler : http.Handler := {req | { status := 200 |}}

Request

{ method: String, path: String, query: String, headers, body: String, body_bytes: Bytes |}

std:http/server のハンドラが受け取るリクエストレコードの構造的型。
各スロットの意味は std:http/server が正とする。

>>> http := @import "std:http"
>>> handler := {req : http.Request | req.method}

Response

{ status: Int |}

ハンドラが返す応答の最小契約。status のみを要求し、headers / body /
body_bytes は任意スロット。構造的照合は幅サブタイプなので、std:http/client の
応答レコードもそのままこの型を満たす。

>>> print ({ status := 200 |} matches http.Response)
true