Deno: параметры запроса доступа в контроллере - PullRequest
1 голос
/ 26 мая 2020

Я написал пару API для Deno PO C.

Это код маршрута:

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)

Я использую дуб для маршрутизации. Я пробовал различные ключевые слова из кодовой базы дуба: запрос, поиск и т. Д. c, но безуспешно.

Я также пробовал getQuery из документации Oak, но мне совершенно не удалось его импортировать.

1 Ответ

2 голосов
/ 26 мая 2020

В дубе вы можете использовать .searchParams

ctx.request.url.searchParams

Для получения userId вы должны использовать:

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

getQuery от helpers.ts только на master в настоящее время с момента его появления 12 часов go.

Вместо использования https://deno.land/x/oak@v4.0.0/mod.ts вы можете импортировать https://deno.land/x/oak/helpers.ts, который будет вытягивать из master. Это не рекомендуется, но будет работать до тех пор, пока не будет выпущена новая версия и вы не сможете использовать тегированный импорт.

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

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