Deno:访问控制器中的查询参数

Deno: Access query params in controller

我为 Deno POC 编写了几个 API。

这是路线代码:

const router = new Router()
router.get('/posts', getPosts)
      .get('/posts/:id', getPostsById)

对于第二条路线,我可以在控制器中获取路径参数:getPostsById 使用关键字:params。这是控制器代码:

export const getPostsById = (
  { params, response }: { params:any, response: any }) => {
    console.log(params, '||| params')}

如何以类似的方式获取查询参数(例如:/posts/2222?userId=3)

我正在使用 oak 进行路由。我尝试了 oak 代码库中的各种关键字:查询、搜索等但没有成功。

我也尝试了 Oak 文档中的 getQuery,但我完全无法导入它。

在 Oak 中你可以使用 .searchParams

ctx.request.url.searchParams

要获得 userId,您将使用:

const userId = ctx.request.url.searchParams.get('userId')

getQuery 来自 helpers.ts 目前仅在 master 上,因为它是在 12 小时前推出的。

您可以导入将从 master 提取的 https://deno.land/x/oak/helpers.ts 而不是使用 https://deno.land/x/oak@v4.0.0/mod.ts。虽然不推荐这样做,但在发布新版本并且您可以使用标记的导入之前会这样做。

import { getQuery } from 'https://deno.land/x/oak/helpers.ts'

router.get("/book/:id/page/:page", (ctx) => {
  getQuery(ctx, { mergeParams: true });
});