visual studio net mvc asp and angularjs asp.net-core http-post asp.net-core-mvc

angularjs - studio - asp.net core angular 6



¿Por qué necesito FromBody Attribute cuando esperaba datos en POST body? (1)

Puedo enviar mis datos al servidor, pero ÚNICAMENTE cuando uso FromBody-Attribute.

¿Por qué los datos json no se leen automáticamente del Cuerpo mediante una publicación?

Backend web api

[HttpPost] public async Task<IActionResult> Post([FromBody]CreateSchoolyearRequestDTO dto) { }

Frontend angularjs

this.createSchoolyear = function (schoolyear) { var path = "/api/schoolyears"; return $http({ url: path, method: "POST", data: schoolyear, contentType: "application/json" }).then(function (response) { return response; }); };


Solo porque algo sea una solicitud POST, no hay una regla clara de cómo se transfieren los argumentos. Una solicitud POST aún puede contener parámetros de consulta codificados en la URL. Se espera que un parámetro de método sea un parámetro de consulta para tipos "simples" (strings, ints, etc.).

Por lo general, se espera que los tipos complejos sean objetos de formulario POST. La solicitud estándar de POST de ASP.NET es un envío de formulario, por ejemplo, al iniciar sesión. Los parámetros en esas solicitudes generalmente se codifican como application/x-www-form-urlencoded , básicamente una cadena de pares clave / valor. Para tipos de parámetros complejos, p. Ej. Objetos de modelo de vista de formulario, se asume el valor predeterminado.

Para todas las demás situaciones no predeterminadas, debe ser explícito de dónde viene un parámetro de método, cómo se transfiere en la solicitud. Para ese propósito, hay una serie de atributos diferentes:

  • FromBodyAttribute : para los parámetros que provienen del cuerpo de la solicitud
  • FromFormAttribute : para parámetros que provienen de un solo campo de datos de formulario
  • FromHeaderAttribute : para los parámetros que provienen de un campo de encabezado HTTP
  • FromQueryAttribute : para los parámetros que provienen de un argumento de consulta codificado en la URL
  • FromRouteAttribute : para los parámetros que provienen de los datos de la ruta
  • FromServicesAttribute - Para los parámetros para los cuales los servicios deben ser inyectados a nivel de método