Таким образом, у меня есть некоторые ресурсы в моем API с отношениями внешних ключей, и эти записи fk (в зависимости от проекта) не могут быть созданы, если сначала не выполняется POST для этого конкретного ресурса.
Я не могу создать страну, отправив сообщение в Wine, даже если страна является внешним ключом.
ПОЧТА собирается в / api / wine not / api / country
Другими словами, если я отправлю эту полезную нагрузку на ресурс Wine:
{
id: 79,
name: "Bordeaux",
country: {
id: 76,
code: "FR",
name: "France"
},
year: "2005"
}
Он потерпит неудачу, если эта страна уже не существует. Мы не можем создать страну из этого POST, потому что мы размещаем POST для ресурса Wine, а не для Country.
Это было сделано намеренно, потому что в API существуют другие отношения внешних ключей, которые потребитель никогда не сможет изменять или создавать. Более того, предоставление потребителю возможности создавать несколько ресурсов из одной полезной нагрузки, похоже, открыло бы возможность введения опечаток, дубликатов записей и порчи данных, особенно когда API масштабируется, а люди пишут сценарии вокруг него и знакомятся с передачей данных. в это.
Если у меня есть конечная точка GET, которая отражает цепочку отношений внешнего ключа
/api/planet/country/state/city/postal_code/
и я делаю ПОЧТУ:
/api/postal_code/
Я не должен быть в состоянии создать планету, страну, штат или город, я должен иметь возможность ссылаться на существующие записи для этих ресурсов, только если они существуют, и, наконец, создать новый почтовый индекс.
Мой вопрос прост: какова стандартная практика для этого? Какая методология используется чаще? Если бы мне пришлось открыть свой API для поддержки создания каждого ресурса внешнего ключа из одной конечной точки - кажется, что это исключило бы некоторые преимущества использования отношений внешнего ключа.