Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los protocolos para el uso del método POST por parte de los servicios de datos de ADO.NET se describen en las siguientes listas y ejemplos. Otro comportamiento requerido por el Hypertext Transfer Protocol, RFC 2616 se describe en Requisitos HTTP comunes (marco de trabajo de los servicios de datos de ADO.NET) y PUT, POST y DELETE (marco de trabajo de servicios de datos de ADO.NET).
Los siguientes protocolos se aplican a las solicitudes HTTP que usan el método POST.
Un método POST ejecutado en los recursos de los servicios de datos de ADO.NET debe contener una serialización, incluida en el cuerpo de la solicitud, del conjunto de entidades o tipo de entidad identificado por el nodo hoja del URI de solicitud. La semántica de la solicitud indica que los datos se van a usar en un nuevo recurso de los servicios de datos de ADO.NET.
Las solicitudes POST pueden incluir valores en el cuerpo de la solicitud para las propiedades clave de entidad de la entidad que se va a crear. Una solicitud tal puede generar errores con un código de respuesta 422 Entidad no procesable si el proveedor de almacenamiento asociado con el servicio de datos automáticamente asigna los valores de clave.
Las solicitudes POST no deben especificar el URI de la entidad que se va a agregar. Si se especifica, se devuelve un código de respuesta 400 Solicitud incorrecta y no se agrega la entidad.
Todas las solicitudes POST correctas insertan una nueva entidad en el conjunto de entidades. Las solicitudes devuelven un código de respuesta 201 Creado e incluyen un encabezado de ubicación en la respuesta con el URI de la entidad que se acaba de crear.
Se omiten las anotaciones de contenido aplazado en la carga de solicitud.
Si el URI de la solicitud del encabezado HTTP no coincide con el URI asociado en la carga de respuesta, el URI de la solicitud tiene prioridad y la carga se trata como si incluyese el valor del URI de solicitud.
Las solicitudes POST a las operaciones de servicio pueden devolver un código de respuesta 500 Error interno del servidor si se produce un error mientras se ejecuta la operación; por ejemplo, una excepción en tiempo de ejecución que no sea DataServiceException.
Tipos que admiten el método POST
Los ejemplos siguientes muestran los elementos finales de la sintaxis del URI HTTP y las condiciones en las que los elementos admiten el método POST. Cada caso incluye una descripción de una solicitud POST y los resultados predecibles.
/<EntitySet>
El siguiente ejemplo de URI muestra un conjunto de entidades como elemento final:
/Customers
Descripción:
Admite el método POST.
Inserta una sola instancia de tipo de entidad especificada por el cuerpo de la solicitud en el conjunto.
El URI de la entidad que se va a insertar no debe aparecer en el cuerpo de la solicitud. Si está presente, se devuelve un código de respuesta 400 Solicitud incorrecta.
La carga de la solicitud puede incluir contenido nuevo para los conjuntos de entidades relacionados con éste mediante una propiedad de navegación o de vínculo. No existe ninguna profundidad máxima definida para tales actualizaciones.
Habilita el enlace de la entidad de nivel superior que se acaba de crear en entidades existentes o que se acaben de crear:
Si el recurso 1 contiene sólo el URI de un recurso 2 existente como el valor de una propiedad de navegación o de vínculo de recurso, el recurso 1 se enlaza con el 2.
Si el recurso 1 contiene el URI y el cuerpo de un nuevo recurso relacionado, se devuelve un código de respuesta 400 Solicitud incorrecta porque la propiedad del URI no se debe especificar durante la inserción.
Si el recurso 1 contiene sólo el cuerpo pero no el URI de un nuevo recurso relacionado 2, el recurso 1 y el 2 se insertan y se enlazan.
Ejemplos:
El siguiente ejemplo inserta un nuevo elemento Customer y lo enlaza a los pedidos 1 y 3.
El URI de solicitud finaliza en /Customers. Tiene el formato JSON.
{
Company Name:"Contoso"
City: "Seattle"
Orders : [
{ __metadata: {uri:"/Orders(1)" }},
{ __metadata: {uri:"/Orders(3)" }}
]
}
El siguiente ejemplo inserta un nuevo elemento Customer y un nuevo pedido relacionado.
El URI de solicitud finaliza en /Customers. Tiene el formato JSON.
{
Company Name:"Contoso Widgets"
City: "Seattle"
Orders : [
{
OrderName: "NewOrder",
// additional property values go here
}
]
}
Nota |
|---|
El parámetro de tipo de los objetos __metadata descritos en Reglas de serialización de JSON (marco de trabajo de los servicios de datos de ADO.NET) son opcionales si el tipo de entidad no forma parte de una jerarquía de herencia. Si no se especifica ningún tipo, se supone el tipo base para el conjunto de entidades. Si el tipo forma parte de una jerarquía de herencia, se debe especificar el parámetro de tipo. |
/EntitySet(keyPredicate)
En el ejemplo de URI siguiente se muestra el predicado de clave como elemento final:
/Customers('ALFKI')
Descripción:
No se admite el método POST.
/<NavigationProperty> o /<LinkProperty>
El siguiente ejemplo de URI muestra una propiedad de navegación como elemento final:
/Customers('ALFKI')/Orders
/Products(1)/Category
Descripción:
Las propiedades de navegación y de vínculo admiten el método POST si el final de la relación tiene una cardinalidad mayor que uno.
Las propiedades de navegación y de vínculo deben apuntar al final de la relación cuya cardinalidad sea mayor que uno; de lo contrario, se devuelve el código de respuesta 405 Método no admitido.
Estas propiedades usan la misma semántica para el elemento
/<EntitySet>descrito anteriormente, salvo que el recurso que se acaba de insertar se enlaza al que se identifica mediante el penúltimo segmento del URI.
/<ComplexType>
El siguiente ejemplo de URI muestra un tipo complejo como elemento final:
/Customers('ALFKI’)/Address
Descripción:
- No se admite el método POST.
/<Property>
El siguiente ejemplo de URI muestra una propiedad como elemento final:
/Customers('ALFKI’)/FirstName
Descripción:
- No se admite el método POST.
<Property>/$value
El siguiente ejemplo de URI muestra el valor de una propiedad como elemento final:
/Customers('ALFKI’)/FirstName/$value
Descripción:
- No se admite el método POST.
/<ServiceOperationName>
El siguiente ejemplo de URI muestra el nombre de una operación de servicio como elemento final:
/CustomersByCity?city=London
Descripción:
Admite el método POST.
Invoca la operación del servicio en el servidor.
Los parámetros se pasan a la operación de servicio mediante el cuerpo de la solicitud.
Los parámetros se codifican mediante
application/x-www-form-urlencoding.Las operaciones de servicio invocables mediante los verbos GET o POST, y el documento de metadatos del servicio especifica cuál se admite por operación de servicio. POST se habilita por operación de servicio.
Vea también
Conceptos
Método PUT (marco de trabajo de los servicios de datos de ADO.NET)
Método DELETE (marco de trabajo de servicios de datos de ADO.NET)
Nota