我想知道如何使用 deno 从其他服务器和 API 获取数据?文档中的所有内容都教我如何制作 http 服务器并从本地源读取文件。但是我找不到任何关于在网络上阅读东西的有用信息。
如何从条带 API 读取 JSON 数据?或者,如果我想读取包含文本的HTML文件?
谢谢你的时间!
你需要做一个HTTP请求,因为在Deno中你使用fetch
,浏览器使用的Web API相同。
要读取 JSON 响应,请执行以下操作:
const res = await fetch('https://api.stripe.com');
const data = await res.json();
如果你想要 HTML:
const res = await fetch('https://example.com');
const html = await res.text();
// Now you can use some HTML parsing lib
fetch
需要--allow-net
标志。
我只是给你一个获取Github存储库的GET请求的例子。
您可以根据需要更改 URL 和请求配置。
在下面给出的代码中,我正在调用Github的另一个API。通过使用fetch()
方法,您可以做到这一点。
fetch()
方法首先将 URL 作为第一个参数,下一个参数是RequestInit
,该参数采用请求方法类型、标头、正文等,最后返回该 API 调用的 JSON 响应。
const githubResponse = async (): Promise<any> => {
const response = await fetch("https://api.github.com/search/repositories?q=android", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});
return response.json(); // For JSON Response
// return response.text(); // For HTML or Text Response
}
console.log(await githubResponse());
我已经在一个名为测试.ts的ts
文件中编写了上面的代码。因此,您可以通过下面给出的命令运行上述代码:
deno run --allow-net Testing.ts
接下来,我给你一个示例POST请求代码:
const githubResponse = async (): Promise<any> => {
const body: URLSearchParams = new URLSearchParams({
q: "AvijitKarmakar",
});
const response = await fetch("https://api.github.com/search/repositories", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: body
});
return response.json();
// return response.text(); // For HTML or Text Response
}
console.log(await githubResponse());
您可以看到我创建了一个body
对象并通过body
参数在RequestInit
中传递它,并将请求方法类型更改为POST。
Deno努力尽可能接近现有的浏览器API。
这意味着,您可以使用fetch
.例:
// fetch-kitten.ts
fetch("https://placekitten.com/200/300").then(async (d) =>
Deno.writeFile("kitten.jpg", new Uint8Array(await d.arrayBuffer()))
);
命令行界面:deno run --allow-net --allow-write fetch-kitten.ts
参考