我需要從這個資源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 請求資源,我就會呼叫控制器并收到下面給出的錯誤。例如,如果我在應用程式之外執行操作,那么我可以通過 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);
我在應用程式中使用了什么:Express 和路由控制器庫
問題:為什么在嘗試從控制器的資源中獲取資料時會收到此錯誤?預先感謝您的回復!
uj5u.com熱心網友回復:
您沒有回傳正確的非空結果或具有此類結果的 Promise,這就是官方檔案所說的 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://www.uj5u.com/yidong/369140.html
上一篇:從表單輸入欄位更新陣列
