Desde la plantilla para Web API 2, un método de publicación siempre es así:
[ResponseType(typeof(MyDTO))]
public IHttpActionResult PostmyObject(MyDTO myObject)
{
...
return CreatedAtRoute("DefaultApi", new { id = myObject.Id }, myObject);
}
No entiendo este CreatedAtRoute()
método. ¿Alguien puede explicarme el CreatedAtRoute()
método?
Respuestas:
El
CreatedAtRoute
método está destinado a devolver un URI al recurso recién creado cuando invoca un método POST para almacenar algún objeto nuevo. Entonces, si PUBLICA un artículo de pedido, por ejemplo, puede devolver una ruta como 'api / order / 11' (11 es la identificación del pedido obviamente).Por cierto, estoy de acuerdo en que el artículo de MSDN no sirve para entender esto. La ruta que realmente regrese dependerá naturalmente de su configuración de enrutamiento.
fuente
[Route("[controller]")]
el controlador, ¿qué devuelvo (para que la acción GET adyacente se pueda invocar con la URL, por ejemplo)?Cuando usa CreatedAtRoute, el primer argumento es el nombre del método de Get to the resource. El truco que no es tan obvio es que, incluso con el nombre correcto del método especificado, debe usar el parámetro Name en el atributo HttpGet para que funcione.
Entonces, si el retorno en su publicación es este:
Entonces su atributo de método Get debería verse así, incluso si su método se llama Get:
Las llamadas a su método de publicación no solo devolverán el nuevo objeto (normalmente como JSON), sino que establecerán el encabezado de ubicación en la respuesta al URI que obtendría ese recurso.
fuente
En .net core WebAPI, utiliza este método para devolver un código 201, lo que significa que se creó el objeto.
Como puede ver arriba, el CreatedAtRoute puede recibir 3 parámetros:
routeName Es el nombre que debe poner en el método que será el URI que obtendría ese recurso después de creado.
routeValues Es el objeto que contiene los valores que se pasarán al método GET en la ruta nombrada. Se usará para devolver el objeto creado
contenido Es el objeto que se creó.
El ejemplo anterior muestra la implementación de dos métodos de un controlador simple con un método GET simple con el nombre vinculado y el método POST que crea un nuevo objeto.
IMPORTANTE
Observe que el primer parámetro en CreatedAtRoute (routeName) debe ser el mismo en la definición del Nombre en el método Get.
El objeto en el segundo parámetro necesitará tener los campos necesarios que use para recuperar el recurso en el método Get, puede decir que es un subconjunto del objeto creado por sí mismo
El último parámetro es el objeto de empresa recibido en la solicitud del cuerpo en su forma completa.
FINALMENTE
Como resultado final, cuando se publique la publicación para crear una nueva empresa en esta API, devolverá una ruta como 'api / company / {id}' que le devolverá el recurso recién creado
fuente