Skip to main content

HTTP

Provides HTTP protocol functionality.

http.star
load("http@v0", "http")

Client

The Client can be used in two ways:

  • Perform HTTP verb directly; e.g get, post, delete, etc.
  • Perform do with a provided Request

Constructor

client.star
# basic
http.client()

# with timeout
load("time@v0", "time")
http.client(timeout = time.SECOND * 30)

# with error callback
load("retry@v0", "retry")
http.client(
on_error = lambda error_message: retry.FAIL if error_message == "test" else retry.RETRY
)

# with retry
load("retry@v0", "retry")
load("time@v0", "time")
http.client(retry_strategy = retry.constant(time.SECOND))

Arguments

NameType
timeouttime.Duration
on_errorfunction
retry_strategyretry.Strategy

Attributes

NameArgumentsReturns
geturl: string
headers: dict<string, string>
http.Response
posturl: string
headers: dict<string, string>
body: string
http.Response
post_formurl: string
headers: dict<string, string>
body: dict<string, any>
http.Response
puturl: string
headers: dict<string, string>
body: string
http.Response
deleteurl: string
headers: dict<string, string>
http.Response
traceurl: string
headers: dict<string, string>
http.Response
optionsurl: string
headers: dict<string, string>
http.Response
headurl: string
headers: dict<string, string>
http.Response
patchurl: string
headers: dict<string, string>
http.Response
dohttp.Requesthttp.Response

Examples

client.star
client = http.client()

# get
client.get(
url = "https://docs.bckground.com",
headers = {"Accept":"text/html"}
)

# post
client.post(
url = "https://docs.bckground.com",
headers = {"Accept":"application/json"}
)

# post form
client.post_form(
url = "https://docs.bckground.com",
headers = {
"Accept":"application/json",
"Content-Type":"application/x-www-form-urlencoded"
},
form = {"foo" : "bar" }
)

# put
client.put(
url = "https://docs.bckground.com",
headers = {"Content-Type":"text/html"},
body = "<html/>"
)

# delete
client.delete(url = "https://docs.bckground.com")

# trace
client.trace(url = "https://docs.bckground.com")

# options
client.options(url = "https://docs.bckground.com")

# head
client.head(url = "https://docs.bckground.com")

# patch
client.patch(url = "https://docs.bckground.com")

# do
client.do(
http.request(url = "https://docs.bckground.com", method = http.GET)
)

Request

Constructor

request.star
http.request(
url = "https://docs.bckground.com",
method = http.GET,
headers = { "Accept": "text/html" }
)

Arguments

NameType
urlstring
methodhttp.Method
headersdict<string, string>

Attributes

NameArgumentsReturns
methodstring
urlstring
proto_majorint
proto_minorint
headerdict<string, string>
bodystring
content_lengthint64
transfer_encodinglist<string>
hoststring
remote_addrstring
request_uristring
responsehttp.Response
cookieslist<http.Cookie>
refererstring
user_agentstring
add_cookiehttp.Cookienone

Response

Attributes

NameReturns
statusstring
status_codehttp.StatusCode
protostring
proto_majorint
proto_minorint
headerdict<string, string>
bodystring or none
content_lengthint64
transfer_encodinglist<string>
uncompressedboolean
requesthttp.Request
cookieslist<http.Cookie>
locationstring

Constructor

client.star
http.cookie(name = "custom.analytics", value = "foo=bar")

Arguments

NameType
namestring
valuestring

Attributes

NameArgumentsReturns
namestring
valuestring
quotedboolean
pathstring
domainstring
expirestime.Time
raw_expiresstring
max_ageint
secureboolean
http_onlyboolean
same_siteint
partitionedboolean
rawstring
unparsedlist<string>

Constants

HTTP Methods

NameReturns
GETstring
HEADstring
POSTstring
PUTstring
PATCHstring
DELETEstring
CONNECTstring
OPTIONSstring
TRACEstring

Statuses

NameReturns
STATUS_CONTINUEstring
STATUS_SWITCHING_PROTOCOLSstring
STATUS_PROCESSINGstring
STATUS_EARLY_HINTSstring
STATUS_OKstring
STATUS_CREATEDstring
STATUS_ACCEPTEDstring
STATUS_NON_AUTHORITATIVE_INFOstring
STATUS_NO_CONTENTstring
STATUS_RESET_CONTENTstring
STATUS_PARTIAL_CONTENTstring
STATUS_MULTI_STATUSstring
STATUS_ALREADY_REPORTEDstring
STATUS_IM_USEDstring
STATUS_MULTIPLE_CHOICESstring
STATUS_MOVED_PERMANENTLYstring
STATUS_FOUNDstring
STATUS_SEE_OTHERstring
STATUS_NOT_MODIFIEDstring
STATUS_USE_PROXYstring
STATUS_TEMPORARY_REDIRECTstring
STATUS_PERMANENT_REDIRECTstring
STATUS_BAD_REQUESTstring
STATUS_UNAUTHORIZEDstring
STATUS_PAYMENT_REQUIREDstring
STATUS_FORBIDDENstring
STATUS_NOT_FOUNDstring
STATUS_METHOD_NOT_ALLOWEDstring
STATUS_NOT_ACCEPTABLEstring
STATUS_PROXY_AUTH_REQUIREDstring
STATUS_REQUEST_TIMEOUTstring
STATUS_CONFLICTstring
STATUS_GONEstring
STATUS_LENGTH_REQUIREDstring
STATUS_PRECONDITION_FAILEDstring
STATUS_REQUEST_ENTITY_TOO_LARGEstring
STATUS_REQUEST_URI_TOO_LONGstring
STATUS_UNSUPPORTED_MEDIA_TYPEstring
STATUS_REQUESTED_RANGE_NOT_SATISFIABLEstring
STATUS_EXPECTATION_FAILEDstring
STATUS_TEAPOTstring
STATUS_MISDIRECTED_REQUESTstring
STATUS_UNPROCESSABLE_ENTITYstring
STATUS_LOCKEDstring
STATUS_FAILED_DEPENDENCYstring
STATUS_TOO_EARLYstring
STATUS_UPGRADE_REQUIREDstring
STATUS_PRECONDITION_REQUIREDstring
STATUS_TOO_MANY_REQUESTSstring
STATUS_REQUEST_HEADER_FIELDS_TOO_LARGEstring
STATUS_UNAVAILABLE_FOR_LEGAL_REASONSstring
STATUS_INTERNAL_SERVER_ERRORstring
STATUS_NOT_IMPLEMENTEDstring
STATUS_BAD_GATEWAYstring
STATUS_SERVICE_UNAVAILABLEstring
STATUS_GATEWAY_TIMEOUTstring
STATUS_HTTP_VERSION_NOT_SUPPORTEDstring
STATUS_VARIANT_ALSO_NEGOTIATESstring
STATUS_INSUFFICIENT_STORAGEstring
STATUS_LOOP_DETECTEDstring
STATUS_NOT_EXTENDEDstring
STATUS_NETWORK_AUTHENTICATION_REQUIREDstring