我需要从这个资源http://jsonplaceholder.typicode.com/photos中获得一个列表
控制器
@JsonController('/photo')
@Service()
export class PhotoController {
constructor(private photoService: PhotoService) {}
@Get('/load-photos')
loadPhoto() {
return axios
.get('http://jsonplaceholder.typicode.com/photos')
.then(async (response) => console.log(response.data.slice(0, 8)))
.catch((e) => console.log(e));
}
}邮递员路线:http://localhost:5000/photo/load-photos
当我试图通过axios通过postman请求一个资源时,我就调用控制器,得到下面给出的错误。如果我在应用程序之外执行一个操作,那么通过axios,我可以很容易地将数据输入控制台,例如。
错误
Error:
at new HttpError (C:\pet-project\express\node_modules\src\http-error\HttpError.ts:16:18)
at new NotFoundError (C:\pet-project\express\node_modules\src\http-error\NotFoundError.ts:10:5)
at ExpressDriver.handleSuccess (C:\pet-project\express\node_modules\src\driver\express\ExpressDriver.ts:324:15)
at C:\pet-project\express\node_modules\src\RoutingControllers.ts:164:35
at processTicksAndRejections (internal/process/task_queues.js:95:5)申请课程:
export class App {
public app: express.Application;
constructor() {
this.app = express();
}
public async createExpressServer(port: number) {
useContainer(Container);
useExpressServer(this.app, {
controllers: [AuthController, PhotoController],
middlewares: [],
authorizationChecker: async (action: Action, roles?: string[]): Promise<boolean> => {
return false;
}
});
this.app.listen(port, () => console.log(`Running on port ${port}`));
}
}呼叫应用程序:
const app = new App();
const port: any = process.env.APP_PORT;
app.createExpressServer(5000);我在应用程序中使用了什么:快速和路由控制器库
问:当我试图从控制器获取资源数据时,为什么会出现这个错误?谢谢您的回复!
发布于 2021-11-28 17:57:40
您没有返回一个正确的、非空的结果或包含这样的结果的承诺,这就是为什么您得到了一个404错误,正如正式文件所说的。尝试使用await获得一个结果并显式返回:
@JsonController('/photo')
@Service()
export class PhotoController {
constructor(private photoService: PhotoService) {}
@Get('/load-photos')
async loadPhoto() {
try {
const { data } = await axios
.get('http://jsonplaceholder.typicode.com/photos');
return data.slice(0, 8)
} catch (e: Error) {
console.log(e)
// returns 404 for instance, it's up to you,
// see https://github.com/typestack/routing-controllers#throw-http-errors
throw new NotFoundError(`Photos were not found.`);
}
}
}https://stackoverflow.com/questions/70142160
复制相似问题