Deno 小小实战 Rest Todo API
之前拿 Node.js 做 Web 应用开发,我们可以选择 Express、Koa 等框架
同理,在 Deno 中也可以使用 deno-express、Oak 等框架,这次使用 Oak 现在这个在 github 上拥有最多 star 的框架
Oak 简介
A middleware framework for Deno's http server, including a router middleware. This middleware framework is inspired by Koa and middleware router inspired by Koa-router
Oak 是一个包含路由的 http 框架,它的灵感来自于 Koa 和 Koa-router
实例:
import { Application } from 'https://deno.land/x/oak/mod.ts';
const app = new Application();
app.use(ctx => {
ctx.response.body = "hello Deno!"
})
await app.listen({ port: 8080 });
多个中间件的实例:
import { Application } from 'https://deno.land/x/oak/mod.ts';
const app = new Application();
// Logger
app.use(async (ctx, next) => {
await next();
const rt = ctx.response.headers.get("X-Response-Time");
console.log(`${ctx.request.method} ${ctx.request.url} - ${rt}`)
})
// Timing
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
ctx.response.headers.set("X-Response-Time", `${ms}ms`);
})
// Hello World
app.use(ctx => {
ctx.response.body = "Hello World"
})
await app.listen({ port: 8080 })
Oak 实战
需求分析
添加新的 Todo
显示 Todo 列表
获取指定 Todo 的详情
移除指定 Todo
更新指定 Todo
初始化项目结构
├─ db 作为本地数据库,存放 Todo 数据 ├─ handlers 存放路由处理器 ├─ middlewares 存放中间件,用于处理每个请求 ├─ models 存放模型定义,在我们的示例中只包含 Todo 接口 ├─ services 存放服务层程序 ├─ config.ts 包含应用的全局配置信息 ├─ index.ts 应用的入口文件 └─ routing.ts 包含 API 路由信息
最后更新于
这有帮助吗?