首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >axios在尝试获取列表时出错

axios在尝试获取列表时出错
EN

Stack Overflow用户
提问于 2021-11-28 09:40:22
回答 1查看 151关注 0票数 1

我需要从这个资源http://jsonplaceholder.typicode.com/photos中获得一个列表

控制器

代码语言:javascript
复制
    @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,我可以很容易地将数据输入控制台,例如。

错误

代码语言:javascript
复制
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)

申请课程:

代码语言:javascript
复制
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}`));
    }
}

呼叫应用程序:

代码语言:javascript
复制
const app = new App();
const port: any = process.env.APP_PORT;
app.createExpressServer(5000);

我在应用程序中使用了什么:快速和路由控制器库

问:当我试图从控制器获取资源数据时,为什么会出现这个错误?谢谢您的回复!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-28 17:57:40

您没有返回一个正确的、非空的结果或包含这样的结果的承诺,这就是为什么您得到了一个404错误,正如正式文件所说的。尝试使用await获得一个结果并显式返回:

代码语言:javascript
复制
    @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.`); 
       }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70142160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档