Вопрос или проблема
- Версия Strapi: 5.0.2 Community
- Операционная система: Windows 11 Professional Версия 23H2 (Сборка ОС 22631.4249)
- База данных: sqlite
- Версия Node: v20.17.0
- Версия NPM: 10.8.3
- Версия Yarn: 1.22.22
Я только что установил Strapi, используя команду ниже, и выбрал создание образцов данных.
yarn create strapi
Я опубликовал все статьи и дважды проверил, что разрешения find и findOne предоставлены роли Public для данных автора.
Я использовал Google Chrome для запроса записей авторов.
Я получаю все записи авторов по следующему URL:
http://localhost:1337/api/authors
{
"data": [
{
"id": 1,
"documentId": "j32zwfrmo0h7ed5fk51qb1is",
"name": "Давид Доу",
"email": "[email protected]",
"createdAt": "2024-10-03T14:54:43.775Z",
"updatedAt": "2024-10-03T14:54:43.775Z",
"publishedAt": "2024-10-03T14:54:43.772Z",
"locale": null
},
{
"id": 2,
"documentId": "d7tjdbzbakg83kgnxe7818fi",
"name": "Сара Бейкер",
"email": "[email protected]",
"createdAt": "2024-10-03T14:54:44.657Z",
"updatedAt": "2024-10-03T14:54:44.657Z",
"publishedAt": "2024-10-03T14:54:44.652Z",
"locale": null
}
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 25,
"pageCount": 1,
"total": 2
}
}
}
Однако я не могу получить отдельную запись по следующему URL, и он выдает ошибку 404 не найдено.
http://localhost:1337/api/authors/2
{
"data": null,
"error": {
"status": 404,
"name": "NotFoundError",
"message": "Не найдено",
"details": {}
}
}
У меня нет кастомизации для этого типа коллекции авторов.
Контроллер коллекции Gift ./src/api/author/controllers/author.ts выглядит следующим образом:
/**
* контроллер автора
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreController('api::author.author');
Я пропустил какой-либо шаг?
Попробуйте использовать значение свойства documentId
вместо id
.
http://localhost:1337/api/authors/d7tjdbzbakg83kgnxe7818fi
в вашем случае.
Ответ или решение
Кажется, что ваша проблема связана с тем, что Strapi использует свойство documentId
для идентификации записей, и именно это свойство необходимо использовать для доступа к отдельным записям. В вашей ситуации запрос по адресу http://localhost:1337/api/authors/2
возвращает ошибку 404, так как Strapi не может найти запись с указанным идентификатором. Вместо этого, вам следует использовать documentId
, который соответствует записи, к которой вы пытаетесь получить доступ.
Попробуйте выполнить запрос по следующему URL-адресу:
http://localhost:1337/api/authors/d7tjdbzbakg83kgnxe7818fi
Где d7tjdbzbakg83kgnxe7818fi
— это значение свойства documentId
, соответствующее автору с именем "Sarah Baker". Этот запрос должен вернуть нужные вам данные.
Для дальнейшего понимания и решения вашей проблемы, рекомендую также проверить следующие моменты:
-
Права доступа: Вы уже упомянули, что проверили разрешения на доступ к данным для роли Public. Убедитесь, что разрешения на
findOne
действительно включены для вашей коллекции Author. -
API URL: Убедитесь, что URL-адрес и идентификатор записи введены правильно. Необходимо следить за написанием, включая большие и маленькие буквы.
-
Логи сервера: Просмотрите логи вашего Strapi-сервера на наличие возможных ошибок или предупреждений, которые могут дать подсказку о том, что может идти не так.
-
Документация: Проверьте официальную документацию Strapi по использованию REST API, чтобы убедиться, что вы понимаете, как ожидается использовать API.
Если у вас всё ещё возникают проблемы после выполнения этих шагов, возможно, стоит проверить настройки схемы коллекции’ или, если возможно, создать новую коллекцию, чтобы исключить возможные конфликты или проблемы с текущими данными.