Получение 404 от контроллера inversify-express-utils - PullRequest
0 голосов
/ 14 ноября 2018

Я изо всех сил пытаюсь правильно настроить службу inversify-express-utils.Я пытаюсь использовать два контроллера, но, похоже, только один из них обнаружен inversify.

В моей текущей конфигурации, кажется, регистрируется только helloController.Запросы на GET .../api/v1/hello отвечают, как и ожидалось, с 200 OK.Тем не менее, запросы к GET .../api/health отвечают 404. НЕ НАЙДЕНО.

Что я делаю не так?

Вот моя текущая конфигурация:

src
│
└──api
   │  index.ts
   │
   └──controller
      │  index.ts
      │  healthController.ts
      │
      └──v1
         │  index.ts
         │  helloController.ts

src/api/index.ts

import "reflect-metadata"
import {Container} from "inversify"
import {InversifyExpressServer} from "inversify-express-utils"
import "./api/controller"

const inversifyContainer = new Container()
const server = new InversifyExpressServer(inversifyContainer)
const serverInstance = server.build()
serverInstance.listen(3000)

src / api / controller / index.ts

export * from "./healthController"
export * from "./v1/"

src / api / controller/healthController.ts

import {Request, Response} from "express"
import {BaseHttpController, controller, httpGet} from "inversify-express-utils"

@controller('/')
export class HealthController extends BaseHttpController {

    constructor(){ super() }

    @httpGet('/health')
    private health(req: Request, resp: Response) {
        resp.json({uptime: process.uptime()})
    }
}

src / api / controller / v1 / index.ts

export * from "./helloController"

src / api / controller/v1/helloController.ts

import {Request, Response} from "express"
import {BaseHttpController, controller, httpGet} from "inversify-express-utils"


@controller('/v1/hello')
export class helloController extends BaseHttpController {

    @httpGet('/')
    private hello(req: Request, resp: Response) {
        resp.send("Hello, World!")
    }
}

1 Ответ

0 голосов
/ 14 ноября 2018

Разобрался.

Аннотация @controller (), похоже, не работает с корневым ('/') путем.

Работает после изменения healthController.ts на следующее

import {Request, Response} from "express"
import {BaseHttpController, controller, httpGet} from "inversify-express-utils"

@controller('/health')
export class HealthController extends BaseHttpController {

    @httpGet('/')
    private health(req: Request, resp: Response) {
        resp.json({uptime: process.uptime()})
    }
}
...