¿Puede MVC 4 Web API asignar valores como los controladores MVC tradicionales?

¿Es posible que la API web asigne valores de un cuerpo de mensaje a la lista de argumentos? Por ejemplo, si tuviera esto:

public HttpResponseMessage Post(int id, string value1, string value2) {}

en lugar de esto:

public HttpResponseMessage Post(MyCustomClass message) {}

Estaba publicando JSON a través de Fiddler y solo pude hacer que este último funcionara. Aunque prefiero mucho más el último, tenía curiosidad por saber si era posible hacer funcionar el primer ejemplo. Podría hacer que funcionara usando parámetros de cadena de consulta, pero no pude hacer que funcionara publicando valores de formulario o json. Sólo curioso.

preguntado el 27 de julio de 12 a las 14:07

1 Respuestas

No, no es posible. Mike Stall tiene una gran publicación que explica esto en detalle: http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

En resumen, en MVC solo tenía carpetas de modelos, y todo el cuerpo de la solicitud se almacenaba en búfer y se alimentaba a la carpeta.

En la API web, tiene enlazadores de modelos y formateadores.

La regla general es que la API web utiliza enlazadores de modelos para leer parámetros de cadenas de consulta y formateadores para leer el cuerpo. Y el cuerpo de la solicitud no está almacenado en el búfer: es un flujo asíncrono unidireccional de solo lectura. Por lo tanto solo puedes leer una cosa del cuerpo - ya sea un tipo simple (es decir, cadena, int) o un tipo complejo, no importa - solo puede ser una cosa.

Respondido 27 Jul 12, 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.