Custom api endpoint in strapi4 returning 404 not found error

Hello,

I can help you with that. Use the below logic to create custom API:

//.src/api/lpv-banner-data/routes/lpv-banner-data.js
'use strict';
const { createCoreRouter } = require('@strapi/strapi').factories;
const defaultRouter = createCoreRouter('api::lpv-banner-data.lpv-banner-data');

const customRouter = (innerRouter, extraRoutes = []) => {
  let routes;
  return {
    get prefix() {
      return innerRouter.prefix;
    },
    get routes() {
      if (!routes) routes = innerRouter.routes.concat(extraRoutes);
      return routes;
    },
  };
};

const myExtraRoutes = [
  {
    method: 'GET',
    path:'/api-route',
    handler:'api::lpv-banner-data.lpv-banner-data.fetchData'
  }
];

module.exports = customRouter(defaultRouter, myExtraRoutes);
//.src/api/lpv-banner-data/controllers/lpv-banner-data.js
'use strict';
const { createCoreController } = require('@strapi/strapi').factories;
const moment = require("moment");

module.exports = createCoreController("api::lpv-banner-data.lpv-banner-data", ({ strapi }) => ({
  async fetchData (ctx, next){
    try{
      const data = await strapi.service("api::lpv-banner-data.lpv-banner-data").fetchData();
      ctx.send(data)
    }
    catch(err){
      ctx.badRequest("Post report controller error", err);
    }
  } 
}))

Then execute your API endpoint in the frontend.

await axios.get(`https://sitename/api/api-route`);

Hope this helps you and get you started :wink:

1 Like