Какова хорошая практика отправки и получения данных json из REST API без предоставления первичного ключа сущности?

#laravel #eloquent #rest #eloquent-relationship

Вопрос:

В настоящее время я работаю в рамках laravel.

Вот мой сценарий: скажем, у меня есть ПОЛИТИКА трех организаций: ПОЛЬЗОВАТЕЛЬ, ПОЛУЧАТЕЛЬ.

Отношение: У ПОЛЬЗОВАТЕЛЯ много БЕНЕФИЦИАРОВ, ПОЛИТИК. ПОЛИТИКА принадлежит ПОЛЬЗОВАТЕЛЮ. ПОЛУЧАТЕЛЬ принадлежит ПОЛЬЗОВАТЕЛЮ

Теперь, когда пользователь выбирает просмотр/обновление информации о политике, я должен отправлять (данные JSON на интерфейс) информацию о политике, информацию о пользователях, а также информацию о бенефициарах, где пользователь может обновить эти данные.

Во-первых, я извлек политику с помощью policy_id и нетерпеливо загрузил пользователя и User.бенефициаров, отформатировал все данные и вернул JSON.

Конечная точка для отображения всей информации о политике, пользователе и бенефициарах — GET /api/v1/policy/{policy_id}

конечная точка обновления информации о пользователе-ПАТЧ /api/v1/политика/{идентификатор политики}/информация о пользователе

конечная точка обновления информации о получателе — ПАТЧ /api/v1/политика/{идентификатор политики}/информация о получателе

Обновить информацию о пользователе очень просто. У меня есть policy_id по запросу, и я могу использовать красноречивое отношение для обновления информации о пользователе примерно так:

  $policy->user->update($postData)
 

Но в случае бенефициаров у пользователя может быть много бенефициаров.
Скажем, у пользователя было 2 бенефициара, и я отправил данные JSON этих бенефициаров.
Взамен я получаю почтовые данные бенефициаров для обновления в качестве

 {
    {
        "first_name": "Tassy",
        "middle_name": "Prasad",
        "last_name": "Villis",
        "relation": "Mother",
        "dob": "08/01/1942",
    },
    {
        "first_name": "Pradeep",
        "middle_name": "",
        "last_name": "Villis",
        "relation": "Brother",
        "dob": "11/03/1938",
    }
 }
 

Один из способов-перебрать эти данные и обновить их следующим образом

 foreach($request->validated() as $key => $data){
    $policy->user->beneficiaries[$key]->update($data)
}
 

Но это может и не должно быть правильным способом сделать это.

Как обновить информацию о получателе? Должен ли я отправить соответствующий идентификатор бенефициара на интерфейс? Если да, то что, если я не верну эти идентификаторы бенефициаров с данными post? Что-то вроде этого —

    {
        "34657": {
            "first_name": "Tassy",
            "middle_name": "Prasad",
            "last_name": "Villis",
            "relation": "Mother",
            "dob": "08/01/1942",
        },
        "34658": {
            "first_name": "Pradeep",
            "middle_name": "",
            "last_name": "Villis",
            "relation": "Brother",
            "dob": "11/03/1938",
        }
    }
 

Надеясь, что эти идентификаторы будут присутствовать с данными post или разработчик переднего плана отправит меня обратно точно по этому шаблону(с идентификаторами в качестве ключа)?

Или мне следует изменить свои конечные точки, предоставляя первичные ключи?

P. S : Это фреймворк laravel. Так что, если в рукаве есть какой-нибудь подвох.

Комментарии:

1. Вы можете использовать uuid