Deno 中如何发送 HTTP 请求

阅读时长 4 分钟读完

本文将介绍如何在 Deno 中使用内置的 fetch API 发送 HTTP 请求,包括 GET,POST 等方法,以及如何处理返回值和错误。

fetch API

在 Deno 中,可以使用内置的 fetch API 发送 HTTP 请求。fetch 方法接收一个 url 和一些配置参数,并返回一个 Promise 对象。fetch 方法所返回的 Promise 解析为 Response 对象,该对象包含了响应的信息,如状态码、响应头、响应内容等。

fetch 方法的语法如下:

其中,url 参数可以是一个字符串类型的 URL 地址,也可以是一个 URL 对象,options 参数是一个可选的配置参数对象,包括了一些请求的选项,如请求方法、请求头、请求体、超时时间等。

GET 请求

发送 GET 请求的方法非常简单,只需要向 fetch 方法传入一个 URL 地址即可,默认情况下,fetch 方法会使用 GET 方法发送请求。

示例代码如下:

上面的代码中,我们向 dummyapi.io 发起了一个 GET 请求,获取了该 API 的所有用户数据。我们可以使用 headers 参数来传递请求头信息,这里我们传递了一个 app-id 参数,该参数是会员制 API 接口的身份验证信息。

等待 fetch 方法返回的 Promise 解析成 Response 对象后,我们通过调用 json() 方法来解析响应的 JSON 数据。此时可以对返回值做进一步处理,比如将数据渲染到页面上。

POST 请求

发送 POST 请求需要额外指定请求方法以及请求体数据。我们可以使用 method 和 body 参数来指定请求方法和请求体。

示例代码如下:

-- -------------------- ---- -------
----- -------- - ----- ----------------------------------------- -
  ------- -------
  -------- -
    --------------- -------------------
    --------- --------------------------
  --
  ----- ----------------
    ----- ------
    ---- --
  --
---
----- ---- - ----- ----------------
------------------

上面的代码中,我们向 dummyapi.io 发起了一个名为 Tom,年龄为 22 的新用户注册 POST 请求。在 headers 参数中,我们额外指定了 Content-Type 为 application/json 类型,同时也加上了身份验证信息。我们将请求体以 JSON 格式序列化后放到了 body 参数中。

等待 fetch 方法返回的 Promise 解析成 Response 对象后,我们同样可以调用 json() 方法来解析响应的 JSON 数据。

错误处理

在实际开发中,往往需要处理请求过程中出现的错误。fetch API 返回的 Promise 在出现网络错误时会被拒绝,并抛出一个类型为 TypeError 的异常。

我们可以通过 try-catch 语句来捕获这个异常。当出现异常时,可以在 catch 语句块中进行错误处理,例如输出错误提示信息或记录错误日志。

示例代码如下:

-- -------------------- ---- -------
--- -
  ----- -------- - ----- ----------------------------------------- -
    -------- -
      --------- --------------------------
    -
  ---
  ----- ---- - ----- ----------------
  ------------------
- ----- ------- -
  -------------------- ----------- ---------------
-

上面的代码中,我们通过 try-catch 语句捕获了可能出现的异常,并在 catch 语句块中输出了错误信息。

结论

本文介绍了如何在 Deno 中使用 fetch API 发送 HTTP 请求,包括 GET,POST 等方法,以及如何处理返回值和错误。fetch API 提供了非常灵活的方式来处理 HTTP 请求,是 Deno 前端开发的重要组成部分。

在实际开发中,鉴权、请求参数等均需要进行进一步的处理,开发者可以根据具体的需求和 API 接口要求来进行选择和优化。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677230cd6d66e0f9aad56e6d

纠错
反馈