安装与设置
在使用 Deno 的 HTTP客户端之前,你需要确保已经安装了 Deno。你可以通过以下命令来检查是否已安装 Deno:
deno --version
如果没有安装 Deno,可以参考官方文档进行安装。
Deno 内置了一个强大的 HTTP 客户端,可以直接使用,无需额外安装任何包。接下来我们开始学习如何使用这个内置的 HTTP 客户端。
发送简单的 HTTP 请求
GET 请求
发送一个简单的 GET 请求非常简单。只需使用 fetch
方法,并传入请求的 URL 即可:
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); console.log(await response.json());
上述代码会从指定的 URL 获取数据并将其解析为 JSON 对象。
POST 请求
对于 POST 请求,你需要传递请求体和一些配置选项:
-- -------------------- ---- ------- ----- ---- - - ------ ------ ----- ------ ------- - -- ----- ------- - - ------- ------- -------- - --------------- ------------------ -- ----- --------------------- -- ----- -------- - ----- --------------------------------------------------- --------- ----------------- -----------------
这段代码向指定的 URL 发送一个 POST 请求,并将数据作为请求体的一部分。
处理响应
检查状态码
响应对象提供了多种方法来获取有关请求的信息。其中最常用的是 status
和 ok
属性:
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); if (!response.ok) { console.error(`HTTP error! Status: ${response.status}`); } else { console.log(await response.json()); }
解析响应体
根据响应的内容类型,你可以选择不同的方式来解析响应体。对于 JSON 数据,你可以直接调用 .json()
方法:
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); const data = await response.json(); console.log(data);
如果响应是文本形式,可以使用 .text()
方法:
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); const textData = await response.text(); console.log(textData);
设置请求头
在某些情况下,你可能需要向服务器发送自定义的请求头。这可以通过在 fetch
方法的第二个参数中添加 headers
属性来实现:
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1', { headers: { 'X-Custom-Header': 'Custom Value', }, }); console.log(await response.json());
超时控制
在发送网络请求时,可能会遇到请求超时的情况。Deno 不直接支持设置请求超时,但你可以通过 Promise.race 来实现这一功能:
-- -------------------- ---- ------- ----- -------- -------------------------- ------- - --- ------- - ----- - ----- ---------- - --- ------------------ ----- -- - ------------- -- ------------------- --------- ----- -------- - ----- --------------- - ----------- ------- ----------------- --- ----------------- ------ --------- - ------ -- -- - --- - ----- -------- - ----- ---------------------------------------------------------------- --- ------ ----------------- ----------------- - ----- ------- - ---------------------- ------- - -----
这段代码定义了一个 fetchWithTimeout
函数,它会在指定的时间内等待响应。如果超过该时间,请求将被取消,并抛出错误。
错误处理
在实际应用中,错误处理是非常重要的。Deno 提供了多种方法来捕获和处理错误:
try { const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); if (!response.ok) throw new Error('Network response was not ok'); console.log(await response.json()); } catch (error) { console.error('Fetch error:', error); }
在这个例子中,我们使用了 try...catch
结构来捕获可能出现的错误,并进行相应的处理。
自定义中间件
虽然 Deno 的 fetch
API 并没有直接提供中间件的概念,但你可以通过封装函数来模拟类似的功能:
-- -------------------- ---- ------- ----- -------- --------------- - -------------------- ------- -- --------- ----- -------- - ----- ----------- --------------------- -------- ---- --------- ------ --------- - ------ -- -- - ----- -------- - ----- ----------------------------------------------------------- ----------------- ----------------- -----
在这个例子中,我们定义了一个 logRequest
函数,在发送请求前后分别打印日志信息。
以上就是使用 Deno 发送 HTTP 请求的基本方法。希望这些示例能帮助你更好地理解和使用 Deno 的 HTTP 客户端功能。