开发者问题收集

单一集合类型中的 API 调用 Strapi v4 中未显示图像 URL

2021-12-28
19280
{
id: 2,
attributes: {
title: ‘Test Title’,
body: ‘Test Body’,
date: null,
createdAt: ‘2021-11-30T20:52:09.206Z’,
updatedAt: ‘2021-11-30T20:57:26.724Z’,
publishedAt: ‘2021-11-30T20:57:26.720Z’
}
3个回答

我自己也遇到过这种问题。我无法使用 Strapi 4 和 Nuxtjs 将其与查询引擎和实体引擎配合使用。

要显示 API 中的图像或(动态)组件,请务必使用:

http://localhost:1337/api/[your api]?populate=*

遗憾的是,默认情况下不显示它们。他们说:

我们不会在 Strapi 中默认自动填充任何字段,因为不这样做的目的主要是性能,但也是为了安全性,因为在 v4 中,如果某个角色无权访问相关内容类型上的查找控制器,则无法填充它。

在 v4 上进行此更改是不可能的,因为这将被视为破坏,但我们对超出默认值的功能请求持开放态度。

如果您想对具有嵌套组件的动态区域执行此操作,您应该执行以下操作:

http://localhost:1337/api/[your api]?populate=ImagesRepeater.image

这里 ImageRepeater 是块的名称, image 是组件内的字段。

如果您想在不填充 URL 的情况下实现相同功能,您可以在此处找到更多文档: https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/populating-fields.html#population

BrianR.
2022-01-12

Strapi 4 要求您填充您的请求(请参阅: 人口文档

可能看起来像这样(针对 2 级人口):

    // populate request
    const qs = require('qs')
    const query = qs.stringify(
      {
        populate: {
          Title: {
            populate: ['Image']
          }
        }
      },
      {
        encodeValuesOnly: true
      }
    )
    // get id 
    const id = yourId
    // get rquest
    const Response= await axios.get(
      `http://localhost:1337/api/[your api]/${id }/?${query}`
    )
DontEatMyCookies
2021-12-28

在网址末尾添加 {?populate=*> 。例如, http://localhost:1337/api/cards?populate= *

Nikita
2022-07-13