1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fyl080801-egg-decorator-router

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.zh_CN.md 5.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 24.11.2024 21:42 7141476

Эгг декорэйтор роутер

НМП вэрсион билд статус Тест каверэдж Дэвид дэпс Ноун Вулнэрабилэтэс нмп даунлоуд

Использование декоратора для определения маршрутов и промежуточных программ в egg.js.

Зависимости

Версия egg-декоратор-роутер

egg-decorator-router версия egg 1.x
1.x 😁
0.x

Включение плагина

// config/plugin.js
exports.decoratorRouter = {
  enable: true,
  package: 'egg-decorator-router'
}

Для проектов на основе typescript можно напрямую использовать декораторы. Если проект написан на js, необходимо вручную установить пакеты babel-plugin-transform-decorators-legacy и babel-plugin-transform-object-rest-spread, а также добавить файл .babelrc в проект.

.babelrc определяет следующее:

{
  "plugins": ["transform-decorators-legacy", "transform-object-rest-spread"]
}

Использование

  • Не нужно отдельно определять маршрутизатор, просто используйте декоратор в контроллере для автоматического создания маршрутизатора.
  • Поддержка добавления промежуточных программ через декораторы в контроллеры.

Правила

Полный путь HTTP-запроса представляет собой результат объединения корневого пути и дочернего пути.

В контроллерах сначала импортируйте зависимости.

const {
  Route,
  HttpAll,
  HttpGet,
  HttpPost,
  HttpPut,
  HttpPatch,
  HttpDelete,
  Middleware
} = require('egg-decorator-router')

Если используется typescript:

import {
  Route,
  HttpAll,
  HttpGet,
  HttpPost,
  HttpPut,
  HttpPatch,
  HttpDelete,
  Middleware
} from 'egg-decorator-router'

Определение маршрута в контроллере

Определите корневой путь в контроллере.

// root path is '/'
@Route()

// root path is '/'
@Route('/')

// root path is '/routename'
@Route('/routename')

// root path is '/routename/action'
@Route('/routename/action')

Поддерживает определение параметров.

@Route('/routename/:name')

Определение дочернего каталога и HttpMethod

Поддержка методов HTTP HttpGet HttpPost HttpPut HttpPatch HttpDelete HttpAll.

Определите дочерний путь в методе контроллера.

// sub-path is '/'
@HttpGet()

// sub-path is '/'
@HttpGet('/')

// sub-path is '/action'
@HttpGet('/action')

// sub-path is '/action/:id'
@HttpGet('/action/:id')

Определение промежуточного программного обеспечения

@Middleware(routeM)

Пример

'use strict'

const { Controller } = require('egg')
const { Route, HttpGet, Middleware, filters } = require('egg-decorator-router')
const { DefaultFilter } = filters

const routeM = (ctx, next) => {
  console.log('passed route middleware')
  next()
}

const actionM = i => {
  return (ctx, next) => {
    console.log('passed action middleware ' + i)
    next()
  }
}

@Route()
@Middleware(routeM)
class HomeController extends Controller {
  @HttpGet('/') // path: /
  async index() {
    await new Promise(resolve => {
      this.ctx.body = 'ssss'
      resolve()
    })
  }

  @HttpGet() // path: /func1
  @Middleware(actionM(2), 2)
  @Middleware(actionM(1), 1)
  func1(ctx) {
    ctx.body = 'hi, func1'
  }

  @HttpGet('/:id') // path: /:id
  @DefaultFilter('aaa')
  func2(ctx) {
    ctx.body = 'hi, func2 ' + ctx.params.id
  }
}

module.exports = HomeController

Лицензия

MIT

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fyl080801-egg-decorator-router.git
git@api.gitlife.ru:oschina-mirror/fyl080801-egg-decorator-router.git
oschina-mirror
fyl080801-egg-decorator-router
fyl080801-egg-decorator-router
master