Skip to content

HTTP

The @std/http module provides a small HTTP client.

import http from "@std/http"
let res = http.base.request("GET", "https://example.com")
println(res.status)
println(res.body())
NameKindDescription
instancestructHTTP client instance type.
configstructRequest configuration type.
createfunctionCreates a new HTTP instance.
basevalueDefault HTTP instance.

Request configuration.

FieldTypeDescription
bodyanyOptional request body.
headersdict[string, any]Optional request headers.
timeoutintTimeout in seconds.
import http from "@std/http"
let cfg = http.config()
cfg.headers = {
"Accept": "application/json"
}
cfg.timeout = 30
let res = http.base.request("GET", "https://api.example.com/users", cfg)

If no config is passed, the request uses a default timeout of 10 seconds and adds a User-Agent header.

Creates a new HTTP client instance.

Returns: http.instance

import http from "@std/http"
let client = http.create()
client.baseUrl = "https://api.example.com"
let res = client.request("GET", "/users")
println(res.url)

http.base is the default HTTP instance.

import http from "@std/http"
let res = http.base.request("GET", "https://example.com")
println(res.status)

An HTTP instance has a baseUrl field.

When baseUrl is set and the request URL is relative, Nubo joins the base URL and request URL.

import http from "@std/http"
let client = http.create()
client.baseUrl = "https://api.example.com"
let res = client.request("GET", "/users")
println(res.url)

Makes an HTTP request.

Arguments:

NameTypeDefaultDescription
methodstringnoneHTTP method.
urlstringnoneAbsolute URL or relative URL when baseUrl is set.
confighttp.config?nilOptional request config.

Returns: response

import http from "@std/http"
let client = http.create()
let res = client.request("GET", "https://example.com")
println(res.status)

POST request with a body:

import http from "@std/http"
let cfg = http.config()
cfg.body = "{\"name\":\"Martin\"}"
cfg.headers = {
"Content-Type": "application/json"
}
let res = http.base.request("POST", "https://api.example.com/users", cfg)
println(res.status)
println(res.body())

Response fields:

FieldTypeDescription
urlstringFinal request URL.
statusintHTTP status code.
headers`dict[string, string[]string]`

Response methods:

MethodReturnsDescription
body()stringResponse body as text.
json()anyParses the response body as JSON.
import http from "@std/http"
let res = http.base.request("GET", "https://api.example.com/users")
println(res.url)
println(res.status)
println(res.headers)
println(res.body())

Parse JSON:

import http from "@std/http"
let res = http.base.request("GET", "https://api.example.com/users")
let data = res.json()
println(data)