Вы должны отправить запрос POST
на URL, представляющий коллекцию этих ресурсов, чтобы создать ресурс в JSON: Спецификация API:
Ресурс можно создать, отправив запрос POST на URL-адрес, представляющий коллекцию ресурсов. Запрос ДОЛЖЕН включать один объект ресурса в качестве первичных данных. Объект ресурса ДОЛЖЕН содержать хотя бы член типа.
Сама спецификация не зависит от именования URL, но во всех примерах использует тип множественного ресурса. Если вы придерживаетесь того же соглашения, запрос на создание продукта должен быть POST /products
.
Как сказано в приведенной выше цитате, запрос должен включать объект ресурса . Пример в вашем вопросе не является допустимым объектом ресурса, поскольку он пропускает type
, а атрибуты не находятся под ключом attributes
. Допустимый объект ресурса для создания продукта будет выглядеть так:
{
"data":{
"type": "products",
"attributes": {
"externalId": "EIR-32432",
"externalPriceId": "xxx",
"price": "xxx.xx",
"currency": "USD"
}
}
}
Обратите внимание, что отношения не должны отображаться как атрибуты:
Хотя внешние ключи has-one (например, author_id) часто хранятся внутри вместе с другой информацией, которая должна быть представлена в объекте ресурса, эти ключи НЕ ДОЛЖНЫ появляться в качестве атрибутов.
Из вашего примера не совсем ясно, являются ли externalId
и externalPriceId
отношениями в области действия вашего API или нет.
Более подробную информацию о создании ресурса в JSON: API вы найдете в самой спецификации: https://jsonapi.org/format/#crud-creating Также имеется пример.