angularjs - formularios - ¿Cómo no envío los parámetros de la plantilla url con el cuerpo de solicitud en angular?
ng src angular 6 (2)
FWIW, encontré una solución, gracias a @ Reboog711, al incluir un parámetro transformRequest así:
resource = $resource(
"http://foo.com/service/:type/:id",
{},
{save: {
method:''PUT'',
transformRequest:function(data) {
delete data.type;
delete data.id;
return JSON.stringify(data);
},
params: {type:''@type'', id: ''@id''}
}}
);
Supongamos que tengo un recurso configurado como este:
resource = $resource(
"http://foo.com/service/:type/:id",
{},
{save: {method:''PUT'', params: {type:''@type'', id: ''@id''}}}
);
resource.save({type:''user'', id:14, name:''Bob Dole''});
¿Hay alguna forma en que pueda evitar que el type
y la id
se envíen como parte del cuerpo de la solicitud, y simplemente envíe el name
en la carga útil PUT? No controlo la API a la que me envío, y parece que no me gustan los parámetros adicionales que le estoy enviando.
¡Gracias!
Actualización - 25/10/13 - 13:38
La documentación para el resource dice esto:
Si el valor del parámetro tiene el prefijo @, entonces el valor de ese parámetro se extrae del objeto de datos (útil para las operaciones que no son GET).
Eso implica que esto debería eliminar los parámetros de los datos:
resource.save({type:''@user'', id:''@14'', name:''Bob Dole''});
pero no parece funcionar Todavía en una pérdida.
Use el primer parámetro para sus parámetros de plantilla de url y coloque los datos de su publicación en el segundo parámetro de esta manera:
resource.save({id:14, type:''user''}, {name:''Bob Dole''});
Aquí está la línea de los documentos angulares que muestra la firma de la función:
Acciones de "clase" no GET: Resource.action ([parámetros], postData, [éxito], [error])
Aquí hay un ejemplo en plunker
La solicitud que recibe no tiene los parámetros de URL en el cuerpo:
Request URL:http://run.plnkr.co/JAOqZqW6RSywatUM/badUrl/user/14
Request Method:PUT
Request Payloadview source
{name:Bob Dole}