我正在尝试使用slug为一个带有strapi后端的react博客获取帖子。我创建了自定义路径和自定义控制器,但返回的值缺少一些属性,如图像和类别。当我使用帖子ID获取时,我使用查询字符串填充返回的对象,但我不知道如何将qs添加到slug API路径。
下面是自定义控制器和自定义路由
///custom controller
async findOne(ctx) {
const { slug } = ctx.params;
const { query } = ctx;
const entity = await strapi.service('api::article.article').findOne(slug, query);
const sanitizedEntity = await this.sanitizeOutput(entity, query);
return this.transformResponse(sanitizedEntity);
}
///Custom Route
{
method: 'GET',
path: '/articles/slug/:slug',
handler: 'custom-controller.findOne',
config: {
policies: []
},
这是我如何从客户端中获取useEffect
useEffect(()=>{
const fetchData = async()=>{
// const query = qs.stringify({
// populate: '*',
// }, {
// encodeValuesOnly: true,
// });
const res = await axios.get(`http://localhost:1337/api/articles?filters[slug][$eq]=${slug}`)
console.log(res.data)
updateState(res.data)
}
fetchData()
setLoading(false)
}, [slug])
我也尝试过使用实体API服务,但是我就是不能让它工作。我该如何填充对象以包含这些缺失的属性?
1条答案
按热度按时间pexxcrt21#
使用Strapi v4,您可以这样做
src/api/article/_custom.js
中创建一个文件**路由文件按字母顺序加载。要在核心路由之前加载自定义路由,请确保正确命名自定义路由(例如01-custom-routes.js和02-core-routes.js)。
图片来源:www.example.comhttps://docs.strapi.io/developer-docs/latest/development/backend-customization/routes.html#creating-custom-routers
src/api/article/controllers/article.js
**1.现在你可以这样调用你的api:
http://localhost:1337/api/articles/my-beautiful-article-about-orange
参考:https://www.youtube.com/watch?v=OVV0CfgX6Qk