Estoy tratando de crear un objeto con todos los datos relevantes de una solicitud enlazada.
Imagina una acción como esta
[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
Y el modelo podría ser así
public class PostRequest
{
[FromRoute]
public int Id { get; set; }
[FromHeader]
public string SomeHeader { get; set; }
[FromBody]
public int Foo { get; set; }
[FromBody]
public string Bar { get; set; }
[FromBody]
public string Baz { get; set; }
}
Lamentablemente, no se permiten varios [FromBody]
.
Si estuviera permitido y funcionara como se esperaba, podría implementar un controlador CRUD genérico como ese
[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
{
var command = _mapper.Map<TCommand>(model); // AutoMapper
await _mediator.Send(command); // MediatR
// omitted for brevity
return Created();
}
Obviamente, no se vería exactamente así.
La idea es eliminar toda la lógica del controlador que no esté relacionada con API / MVC. Entonces todo lo que hace el controlador es
Ahora puedo tener una implementación para todas mis necesidades de controlador CRUD, ¡y hubo mucho regocijo!
No necesita ser [FromBody]
, podría ser otro atributo. Como [FromBodyPart]
, [BindFromBody]
o algo completamente diferente.
¿Sería eso factible?
Gracias por su solicitud de funciones. Consideraremos esta función durante el próximo período de planificación del lanzamiento y actualizaremos el estado de este problema en consecuencia.
Creo que esta sería una solución para mi pregunta SO que todavía tengo sin respuesta aquí:
https://stackoverflow.com/questions/44261111/how-to-model-bind-path-segment-to-object-property
Gracias por contactarnos.
Después de reevaluar esta pregunta, hemos decidido no proporcionar dicha característica, ya que no está bien alineada con los principios que intentamos seguir en el marco.
Comentario más útil
Gracias por su solicitud de funciones. Consideraremos esta función durante el próximo período de planificación del lanzamiento y actualizaremos el estado de este problema en consecuencia.