docs-v2/content/flux/v0/stdlib/http/requests/post.md

8.2 KiB

title description menu weight flux/v0/tags
requests.post() function `requests.post()` makes a http POST request. This identical to calling `request.do(method: "POST", ...)`.
flux_v0_ref
name parent identifier
requests.post http/requests http/requests/post
201
http
inputs

requests.post() makes a http POST request. This identical to calling request.do(method: "POST", ...).

Function type signature
(
    url: string,
    ?body: bytes,
    ?config: {A with timeout: duration, insecureSkipVerify: bool},
    ?headers: [string:string],
    ?params: [string:[string]],
) => {statusCode: int, headers: [string:string], duration: duration, body: bytes}

{{% caption %}} For more information, see Function type signatures. {{% /caption %}}

Parameters

url

({{< req >}}) URL to request. This should not include any query parameters.

params

Set of key value pairs to add to the URL as query parameters. Query parameters will be URL encoded. All values for a key will be appended to the query.

headers

Set of key values pairs to include on the request.

body

Data to send with the request.

config

Set of options to control how the request should be performed.

Examples

Make a POST request with a JSON body and decode JSON response

import "http/requests"
import ejson "experimental/json"
import "json"
import "array"

response =
    requests.post(
        url: "https://goolnk.com/api/v1/shorten",
        body: json.encode(v: {url: "http://www.influxdata.com"}),
        headers: ["Content-Type": "application/json"],
    )

data = ejson.parse(data: response.body)

array.from(rows: [data])

{{< expand-wrapper >}} {{% expand "View example output" %}}

Output data

result_url
https://goolnk.com/BnXAE6

{{% /expand %}} {{< /expand-wrapper >}}

Make a POST request with query parameters

import "http/requests"

response =
    requests.post(url: "http://example.com", params: ["start": ["100"], "interval": ["1h", "1d"]])

// Full URL: http://example.com?start=100&interval=1h&interval=1d
requests.peek(response: response)

{{< expand-wrapper >}} {{% expand "View example output" %}}

Output data

statusCode body headers duration
200 <!doctype html>
<html> <head>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
    background-color: #f0f0f2;
    margin: 0;
    padding: 0;
    font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
    
}
div {
    width: 600px;
    margin: 5em auto;
    padding: 2em;
    background-color: #fdfdff;
    border-radius: 0.5em;
    box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
    color: #38488f;
    text-decoration: none;
}
@media (max-width: 700px) {
    div {
        margin: 0 auto;
        width: auto;
    }
}
</style>    
</head>

Example Domain

This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.

More information...

</html> | [ Accept-Ranges: bytes, Cache-Control: max-age=604800, Content-Length: 1256, Content-Type: text/html; charset=UTF-8, Date: Thu, 06 Apr 2023 15:02:21 GMT, Etag: "3147526947", Expires: Thu, 13 Apr 2023 15:02:21 GMT, Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT, Server: EOS (vny/0453) ] | 91346421 |

{{% /expand %}} {{< /expand-wrapper >}}