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"
}
]