Digamos que eu tenha um aplicativo da Web JavaScript que use inteiramente uma API RESTful para dados.
Digamos que este aplicativo tenha um formulário de dados e digamos que estou editando um registro em / product / 12345. Ao criar o formulário, faço uma solicitação RESTful para / product / 12345 e obtenho dados JSON:
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27
}
Portanto, obviamente, meu formulário pode ter uma lista suspensa para selecionar um vendedor. Eu preciso preencher esta lista. De onde devem vir os dados? Qual é a abordagem mais comum?
Faria sentido fazer parte da resposta da solicitação / product / 12345?
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27,
"sales_users": [
{"id": 1, "name": "Anna Graham"},
{"id": 2, "name": "Dick Mussell"},
{"id": 3, "name": "Ford Parker"},
{"id": 4, "name": "Ferris Wheeler"},
{"id": 5, "name": "Jo King"}
]
}
E quando criar um novo registro? Minha API também deve responder a GET / product / new, com o seguinte?
{
"sales_users": [
{"id": 1, "name": "Anna Graham"},
{"id": 2, "name": "Dick Mussell"},
{"id": 3, "name": "Ford Parker"},
{"id": 4, "name": "Ferris Wheeler"},
{"id": 5, "name": "Jo King"}
],
"categories": [
{"id": 1, "name": "Category 1"},
{"id": 2, "name": "Category 2"},
{"id": 3, "name": "Category 3"},
{"id": 4, "name": "Category 4"},
{"id": 5, "name": "Category 5"}
],
"etc": [ ... ]
}
Respostas:
Eu me inclino para pontos finais muito simples e com foco restrito. Eu esperaria uma solicitação em algum local como / sales_users que retorne todos os usuários de vendas.
GET / sales_users:
Da mesma forma, se você tiver uma lista de categorias, eu adicionaria um ponto de extremidade separado para isso.
GET / categorias:
Eu não criaria um GET / produto / novo. Em vez disso, eu criaria um formulário no seu aplicativo para lidar com a adição de novos produtos que conhecem as solicitações apropriadas para preencher suas listas (por exemplo, GET / categorias, GET / sales_users etc.).
fonte
Supondo que a lista de vendedores seja relativamente estática, acho que você desejaria uma chamada de API separada para a
/salesusers
qual você poderia ligar uma vez (no carregamento do formulário etc.) e economizaria para não precisar solicitar novamente esses dados cada Tempo. Lembre-se de que no REST você está organizando sua API com base nos recursos, e os vendedores estão logicamente separando recursos dos produtos.Da mesma forma, ao ligar
/product/new
, você gostaria apenas de enviar dados para um novo produto, que pode incluir um ID de sales_user, mas nada mais. Alterações no próprio sales_user seriam uma chamada separada.fonte