Digamos que tengo una aplicación web de JavaScript que utiliza por completo una API RESTful para datos.
Digamos que esta aplicación tiene un formulario de datos, y digamos que estoy editando un registro en / product / 12345. Al crear el formulario, hago una solicitud RESTful a / product / 12345 y obtengo datos JSON:
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27
}
Por lo tanto, mi formulario obviamente puede tener una lista desplegable para seleccionar un vendedor. Necesito completar esta lista. ¿De dónde deben venir los datos? ¿Cuál es el enfoque más común?
¿Tendría sentido incluirlo en la respuesta de solicitud / 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"}
]
}
¿Qué pasa al crear un nuevo registro? ¿Mi API también debe responder a GET / product / new, con lo siguiente?
{
"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": [ ... ]
}
Respuestas:
Me inclino hacia puntos finales muy simples y de enfoque limitado. Esperaría una solicitud en algún lugar como / sales_users que devuelva todos los usuarios de ventas.
GET / sales_users:
Del mismo modo, si va a tener una lista de categorías, agregaría un punto final separado para eso.
OBTENER / categorías:
No construiría un GET / producto / nuevo. Por el contrario, crearía un formulario en su aplicación para manejar la adición de nuevos productos que conozca las solicitudes apropiadas para llenar sus listas (por ejemplo, GET / categories, GET / sales_users, etc.).
fuente
Suponiendo que la lista de vendedores es relativamente estática, creo que desearía una llamada a la API por separado
/salesusers
que podría llamar una vez (en la carga del formulario, etc.) y ahorrar para no tener que volver a solicitar estos datos cada uno hora. Recuerde que en REST, está organizando su API en torno a los recursos, y los vendedores son recursos lógicamente separados de los productos.Del mismo modo, cuando llame
/product/new
, solo querrá enviar datos para un nuevo producto, que puede incluir una identificación de usuario de ventas, pero nada más. Los cambios en un sales_user sí mismo serían una llamada separada.fuente