Hcs.Response
hcs · API reference
HTTP response type and constructors.
Use this module to create text, HTML, JSON, redirect, error, streaming, bigstring, cstruct, file, and prebuilt responses. The returned Response.t is the canonical value consumed by the server engine.
HTTP responses returned by HCS handlers.
Handlers return t. Most code uses the convenience constructors:
let index _req = Hcs.Response.html "<h1>Hello</h1>"
let api _req = Hcs.Response.json {|{"ok":true}|}
let redirect _req = Hcs.Response.see_other "/login"For long-lived responses, use stream directly or higher-level helpers such as Sse.
module Prebuilt : sig ... endtype body =
| Empty
| String of string
| Cstruct of Cstruct.t
| Bigstring of Bigstringaf.t
| Stream of {
content_length : int64 option;
flush_headers_immediately : bool;
next : unit -> Cstruct.t option;
}
| Prebuilt_body of Prebuilt.t (* Response body representation consumed by the server engine. *)type t = {
status : Status.t;
headers : (string * string) list;
body : body;
}Complete HTTP response.
val make : ?status:Status.t -> ?headers:(string * string) list -> string -> tBuild a string response. Defaults to ``OK`.
val empty : ?status:Status.t -> ?headers:(string * string) list -> unit -> tBuild a response with no body. Defaults to ``No_content`.
val ok : ?headers:(string * string) list -> string -> tval created :
?headers:(string * string) list ->
?location:string ->
string ->
tval accepted : ?headers:(string * string) list -> string -> tval no_content : ?headers:(string * string) list -> unit -> tval redirect :
?permanent:bool ->
?headers:(string * string) list ->
string ->
tval moved_permanently : ?headers:(string * string) list -> string -> tval found : ?headers:(string * string) list -> string -> tval see_other : ?headers:(string * string) list -> string -> tval temporary_redirect : ?headers:(string * string) list -> string -> tval not_modified : ?headers:(string * string) list -> unit -> tval bad_request : ?headers:(string * string) list -> ?body:string -> unit -> tval unauthorized :
?headers:(string * string) list ->
?www_authenticate:string ->
unit ->
tval forbidden : ?headers:(string * string) list -> ?body:string -> unit -> tval not_found : ?headers:(string * string) list -> ?body:string -> unit -> tval method_not_allowed :
?headers:(string * string) list ->
allowed:Method.t list ->
unit ->
tval conflict : ?headers:(string * string) list -> ?body:string -> unit -> tval gone : ?headers:(string * string) list -> ?body:string -> unit -> tval unprocessable_entity :
?headers:(string * string) list ->
?body:string ->
unit ->
tval too_many_requests :
?headers:(string * string) list ->
?retry_after:int ->
unit ->
tval internal_error :
?headers:(string * string) list ->
?body:string ->
unit ->
tval not_implemented :
?headers:(string * string) list ->
?body:string ->
unit ->
tval bad_gateway : ?headers:(string * string) list -> ?body:string -> unit -> tval service_unavailable :
?headers:(string * string) list ->
?retry_after:int ->
unit ->
tval gateway_timeout :
?headers:(string * string) list ->
?body:string ->
unit ->
tStatus-specific constructors.
val text : ?status:Status.t -> string -> tPlain-text UTF-8 response.
val html : ?status:Status.t -> string -> tHTML UTF-8 response.
val json : ?status:Status.t -> string -> tJSON response. The body is assumed to already be valid JSON.
val xml : ?status:Status.t -> string -> tXML response.
val stream :
?status:Status.t ->
?headers:(string * string) list ->
?flush_headers_immediately:bool ->
?content_length:int64 ->
(unit -> Cstruct.t option) ->
tStreaming response. next returns chunks until None.
val bigstring :
?status:Status.t ->
?headers:(string * string) list ->
Bigstringaf.t ->
tval cstruct :
?status:Status.t ->
?headers:(string * string) list ->
Cstruct.t ->
tval prebuilt : Prebuilt.t -> tBinary/prebuilt response constructors.
val with_header : string -> string -> t -> tval with_headers : (string * string) list -> t -> tval with_body : string -> t -> tval with_body_raw : body -> t -> tval with_status : Status.t -> t -> tval with_content_type : string -> t -> tval with_cache_control : string -> t -> tval with_no_cache : t -> tval with_cors : ?origin:string -> ?methods:string -> ?headers:string -> t -> tResponse modifiers.
val with_cookie :
?path:string ->
?http_only:bool ->
?secure:bool ->
?same_site:string ->
?max_age:int ->
string ->
string ->
t ->
tAdd a Set-Cookie header.
val clear_cookie : ?path:string -> string -> t -> tExpire a cookie by setting Max-Age=0.