Deno 发起 HTTP 请求
🌙
手机阅读
本文目录结构
发出一个 HTTP 请求
通过 HTTP 请求从服务器获取数据是一件很常见的事。
让我们编写一个简单的程序来获取文件并打印到终端。
就像浏览器一样,您可以使用 web 标准的 fetch
API 来发出请求。
const url = Deno.args[0];
const res = await fetch(url);
const body = new Uint8Array(await res.arrayBuffer());
await Deno.stdout.write(body);
让我们看看它做了什么:
- 第一个命令行参数,存储到变量
url
。 - 我们向指定的地址发出请求,等待响应,然后存储到变量
res
。 - 我们把响应体解析为一个
ArrayBuffer
,等待接收完毕,将其转换为Uint8Array
,最后存储到变量body
。 - 我们把
body
的内容写入标准输出流stdout
。
真实跑一下
deno run https://deno.land/std/examples/curl.ts https://www.axihe.com
这个程序将会返回一个关于网络权限的错误,我们好像姿势不对啊?
显式赋予程序权限
您可能会想起来,最开始就说过,Deno 默认用安全环境执行代码。
这意味着您需要显式赋予程序权限,允许它进行一些特权操作,比如网络访问。
用正确的权限选项再试一次:
deno run --allow-net=www.axihe.com https://deno.land/std/examples/curl.ts https://www.axihe.com
这次就成功啦~!