restclient net dotnet consumir asp c# asp.net-core http-post

c# - net - Publicar FromBody Siempre Nulo



dotnet core http request (4)

Sé que no está relacionado con su caso, aún así, estoy publicando mi respuesta aquí. Es un error tonto que había hecho en mi código. Acabo de copiar, una de mis solicitudes Get y la cambié a Post request, y olvidé decorar el parámetro con [FromBody] . Si alguien más tiene el mismo problema, asegúrese de decorar el parámetro con [FromBody] .

[HttpPost] public IApiResponse Update([FromBody] User user) { if (user == null) return new ApiBadRequestResponse(ModelState); return _userService.Post(user) ? new ApiOkResponse(user) : new ApiResponse(500); }

Tengo una nueva API que estoy construyendo con ASP.NET Core y no puedo obtener ningún dato POST''ED a un punto final.

Así es como se ve el punto final:

[HttpPost] [Route("StudentResults")] public async Task<IActionResult> GetStudentResults([FromBody]List<string> userSocs, [FromBody]int collegeId) { var college = await _collegeService.GetCollegeByID(collegeId); // var occupations = await _laborMarketService.GetOccupationProgramsBySocsAndCollege(userSocs, college); return Ok(); }

Y así es como se ve mi carga útil que estoy enviando a través de Postman:

{ "userSocs": [ "291123", "291171", "312021", "291071", "152031", "533011" ], "collegeId": 1 }

Me estoy asegurando de tener el cartero configurado como POST, con la Content-Type application/json . ¿Qué estoy haciendo mal?


Si el modelo es nulo, verifique:

1) ¿Dónde se envían los datos: cuerpo, forma? y en base a eso agrega el decorador a la acción. Por ejemplo:

[HttpPost] public JsonResult SaveX([FromBody]MyVM vm) { ... }

2) Compruebe ModelState : si no es válido, vm no se enlazará, por lo que será nulo.

if (ModelState.IsValid) { ... }


Si quieres enviar dos o más modelos, debes usar este ejemplo, esto funciona para mí, buena suerte.

[HttpPost] public async Task<ActionResult> addUsuario([FromBody] Newtonsoft.Json.Linq.JObject datos) { Usuarios user = datos["usuario"].ToObject<Usuarios>(); Empresas empresa = datos["empresa"].ToObject<Empresas>(); return Json(await _srv.addUsuario(user, empresa)); }


Siempre obtiene un null porque necesita encapsular todas sus variables de publicación dentro de un solo objeto. Me gusta esto:

public class MyPostModel { public List<string> userSocs {get; set;} public int collegeId {get; set;} }

y entonces

public async Task<IActionResult> GetStudentResults([FromBody] MyPostModel postModel)