跳到主要内容

httpGet 发起 HTTP GET 请求

httpGet() 发起 HTTP GET 请求

luwak.http.get(url: string, config?: object);
  • 自动检测 Content-Type
  • 自动编码解码 JSON 内容

何时使用

  • 当需要通过 HTTP 与外部系统交互时

请求配置

只有 url 参数是必选的,config 参数是可选的,

{
// 自定义请求头
headers: {'X-Requested-With': 'LuwakHttpRequest'},

// `params` 是与请求一起发送的 URL 参数
// 必须是一个简单对象
params: {
ID: 12345
},
}

响应结构

一个请求的响应包含以下信息。

{
// `data` 由服务器提供的响应
data: {},

// `status` 来自服务器响应的 HTTP 状态码
status: 200,

// `statusText` 来自服务器响应的 HTTP 状态信息
statusText: 'OK',

// `headers` 是服务器响应头
// 所有的 header 名称都是小写,而且可以使用方括号语法访问
// 例如: `response.headers['content-type']`
headers: {},
}

代码示例

简单请求

// 取出响应结构中的 data 属性
var { data } = luwak.http.get("https://jsonplaceholder.typicode.com/posts/1");

luwak.returnResult(data);

结果

{
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto",
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"userId": 1
}

请求参数

参数直接放 URL

var { data } = luwak.http.get("https://jsonplaceholder.typicode.com/comments?postId=1");

luwak.returnResult(data);

配置请求参数,替代拼接 URL 参数

var config = {
params: {
postId: 1
}
};

var { data } = luwak.http.get("https://jsonplaceholder.typicode.com/comments", config);

luwak.returnResult(data);

请求头

配置 headers

// 环境变量保存在配置文件中,Luwak 引擎在执行每个脚本前初始化 globalThis
// globalThis.env = {
// apiUrl: "https://jsonplaceholder.typicode.com/comments",
// apiKey: "key-gwFjHY2kynCsJQsO3ApJg7WcKSr44oIE7JKVdf2S7gKFWGml"
// }

var { apiUrl, apiKey } = globalThis.env;

var config = {
params: {
postId: 1
},
headers: {
authorization: `Bearer ${apiKey}`
"client-name": "luwak-http-client"
}
};

var { data } = luwak.http.get(apiUrl, config);

luwak.returnResult(data);

上述脚本请求的 HTTP 报文如下

GET /comments?postId=1 HTTP/1.1
User-Agent: luwak/0.0.0
Authorization: Bearer key-gwFjHY2kynCsJQsO3ApJg7WcKSr44oIE7JKVdf2S7gKFWGml
Client-Name: luwak-http-client
Accept-Encoding: gzip
Host: jsonplaceholder.typicode.com:443

上述脚本返回结果如下

[
{
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"
},
{
"postId": 1,
"id": 2,
"name": "quo vero reiciendis velit similique earum",
"email": "Jayne_Kuhic@sydney.com",
"body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et"
},
{
"postId": 1,
"id": 3,
"name": "odio adipisci rerum aut animi",
"email": "Nikita@garfield.biz",
"body": "quia molestiae reprehenderit quasi aspernatur\naut expedita occaecati aliquam eveniet laudantium\nomnis quibusdam delectus saepe quia accusamus maiores nam est\ncum et ducimus et vero voluptates excepturi deleniti ratione"
},
{
"postId": 1,
"id": 4,
"name": "alias odio sit",
"email": "Lew@alysha.tv",
"body": "non et atque\noccaecati deserunt quas accusantium unde odit nobis qui voluptatem\nquia voluptas consequuntur itaque dolor\net qui rerum deleniti ut occaecati"
},
{
"postId": 1,
"id": 5,
"name": "vero eaque aliquid doloribus et culpa",
"email": "Hayden@althea.biz",
"body": "harum non quasi et ratione\ntempore iure ex voluptates in ratione\nharum architecto fugit inventore cupiditate\nvoluptates magni quo et"
}
]