随着 Deno 的发展,越来越多的开发者开始将注意力转移到 Deno 上,其可靠性和安全性使其成为前端工具包的优秀选择。在 Deno 上实现 REST API 是一个很好的示例,它提供了一个处理 HTTP 请求和响应的框架,而 Oak 框架就是其中的佼佼者。
什么是 Oak 框架?
Oak 是一个灵活的 Deno HTTP 中间件框架,其灵活性体现在其核心中间件的可扩展性,可自定义性和组合性。你可以使用它来构建各种类型的应用程序。
Oak 是中间件构建工具,因此你可以使用它来处理请求和响应。Oak 提供了许多有用的中间件,如路由,静态文件提供,浏览器版本检查和多语言支持。
安装 Oak
安装 Oak 可以使用 Deno 的内置包管理器命令:
deno install --allow-net --allow-read https://deno.land/x/oak/mod.ts
快速安装后,你可以创建你的 Deno 项目并开始使用 Oak。
创建 REST API
我们将使用 Oak 来创建一个简单的 REST API,包含一些常见的 HTTP 方法如 GET、POST、PUT 和 DELETE。对于此教程,我们将编写一个 To-Do 应用程序,它具有以下功能:
- 创建一个新的 To-Do 项目。
- 获取所有的 To-Do 项目。
- 获取单个 To-Do 项目。
- 更新 To-Do 项目。
- 删除 To-Do 项目。
创建服务器
我们将从创建服务器开始。我们将使用 Application
类创建服务器实例。
-- -------------------- ---- ------- -- ------ ------ - ----------- - ---- --------------------------------- ----- --- - --- -------------- ------------- ----- -- - ----------------- - ------- -------- --- ----- ------------ ----- ---- ---
以上代码中,我们使用 Application
类创建服务器实例。这个实例使用我们传递的参数在起动服务器,如 await app.listen({ port: 8000 });
表示我们要启动一个在端口 8000 的服务器。
创建路由
在路由文件夹中,我们将创建我们的路由。其中 router.ts
文件将包含对应我们 To-Do 应用程序的所有路由。
-- -------------------- ---- ------- -- --------- ------ - ------ - ---- --------------------------------- ----- ------ - --- --------- ------ --------- ----- -- - ----------------- - ------ ---- ------ -- -------------- ----- -- - ----------------- - ---- -------- --- ------ ------- -------
以上代码中,我们创建了一个新的路由器,并使用 .get()
方法引入两个路由。当用户访问 /
地址时,我们返回 “To-Do Home Page”,当用户访问 /todos
地址时,我们返回 “All To-Dos”。
导入路由
我们需要调用 app.use()
方法将路由导入到我们的应用程序中。我们将使用 Application
类的 router 中间件来完成这件事。
-- -------------------- ---- ------- -- ------ ------ - ----------- - ---- --------------------------------- ------ ------ ---- -------------- ----- --- - --- -------------- ------------------------- --------------------------------- ----- ------------ ----- ---- ---
我们使用 app.use()
连接到所有路由器的路由和方法。这样我们就可以访问所有 /
和 /todos
路径。如果我们尝试访问的路径不在该路由中,我们会自动返回一个 404。
实现 POST 和 DELETE 方法
现在我们将添加 POST 和 DELETE 路由,当执行 POST 操作时将创建新的 To-Do 任务,并当执行 DELETE 操作时将删除完成的任务。
-- -------------------- ---- ------- -- --------- ------ - ------ - ---- --------------------------------- --------- ---- - --- ------- ------ ------- ---------- -------- - ----- ------ ------ - - - --- -- ------ ----- --- ----- ---------- ----- -- - --- -- ------ ---- ------ ---------- ------ -- -- ----- ------ - --- --------- ------ --------- ----- -- - ----------------- - ------ ---- ------ -- -------------- ----- -- - ----------------- - ------ -- ------------------ ----- -- - -- ----------- -- -------------- - ----- -- - ---------------------- ----- ---- - -------------- -- ---- --- ---- -- ------ - ----------------- - ----- - ---- - ------------------- - ---- - - ---- - ------------------- - ---- - -- --------------- ----- ----- -- - ----- ---- - ----- ------------------- ----- ----- ---- - ----------- ------- - ------------ - -- ----------------- ----------------- - ----- -- --------------------- ----- ----- -- - -- ----------- -- -------------- - ----- -- - ---------------------- ----- ----- - ------------------- -- ---- --- ---- -- ------ - --- - ----- ------ - ------------------- --- ----------------- - ----- - ---- - ------------------- - ---- - - ---- - ------------------- - ---- - --- ------ ------- -------
我们首先定义了一个接口类型,表示我们的 To-Do 任务结构,之后创建了一个 To-Do 任务数组列表。接下来我们将添加三个路由:
/todos/:id
路由用于获得单个 To-Do 任务。/todos
路由用于添加一个新的 To-Do。/todos/:id
路由用于删除一个 To-Do。
对于 POST 和 DELETE 方法,我们使用 request.body()
获取请求数据,使用 request.status
返回响应状态,使用 response.body
获取响应内容。
启动服务器
现在我们的服务都设置完成,我们可以运行起来!执行以下命令:
deno run --allow-net app.ts
现在我们可以在浏览器中访问运行的应用,在表单控制台中可以看到数据所输出的结果。
总结
在本文中,我们使用 Oak 框架创建了一个 REST API 服务。我们创建了一个 To-Do 应用程序,包含了常见的 HTTP 方法(GET、POST、PUT 和 DELETE),以及对应的路由。这个 To-Do 应用程序示范了如何使用 Oak 在 Deno 上构建服务端应用程序。我们可以使用 Oak 在 Deno 上实现更多的服务端应用程序,希望本文对于大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6492cdbd48841e989409a9dc