net核心3.1,在post方法上,postman返回状态404 not found。注释代码就是我尝试过的。
[Route("api/Servicio")]
public class ServicioController : Controller
private readonly ApplicationDbContext _context;
public ServicioController(ApplicationDbContext context)
{
_context = context;
}
// POST: api/PostServicio
//[HttpPost("api/PostServicio")]
//[HttpPost("servicio")]
[HttpPost("api/PostServicio/{servicio}")]
//public async Task<ActionResult<Servicio>> PostServicio([FromBody]Servicio servicio)
public async Task<ActionResult<Servicio>> PostServicio(Servicio servicio)
{
_context.Servicio.Add(servicio);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetServicio), new { id = servicio.Id }, servicio);
}
// GET: api/GetServicio/5
[HttpGet("GetServicio/{tecnico}/{semanaDelAno}")]
public async Task<ActionResult<Servicio>> GetServicio(string tecnico, int semanaDelAno)
{
var servicio = await _context.Servicio.FirstOrDefaultAsync(i => i.Tecnico == tecnico &&
i.SemanaDelAno == semanaDelAno);
if (servicio == null)
{
return NotFound();
}
return servicio;
}
}在邮递员中我有一个身体,未加工,json
{
"Tecnico":"Jhon",
"ServicioRealizado":"Servicio1",
"SemanaDelAno": 1,
"Dia": "Lunes",
"HoraInicial": 13.0,
"HoraFinal": 15.0
}我有这两个动作,我基本上从文档中的api教程中获得了这段代码。

更新************************************************
// POST: api/PostServicio
[HttpPost("PostServicio")]
public async Task<ActionResult<Servicio>> PostServicio([FromBody]Servicio servicio)
{
_context.Servicio.Add(servicio);
await _context.SaveChangesAsync();
//return CreatedAtAction(nameof(GetServicio), new { tecnico = servicio.Tecnico }, new { semanaDelAno = servicio.SemanaDelAno });
return servicio;
}现在它可以工作了
发布于 2021-02-18 14:41:54
请确保您的请求url为:https://localhost:portNumber/api/Servicio/api/PostServicio/xxx.xxx与{servicio}匹配。
但实际上我认为没有必要将{servicio}添加到你的HttpGet中,你从body中发布数据而不是route.So,这里的{servicio}是useless.Just,使用[HttpPost("api/PostServicio")]和请求url:https://localhost:portNumber/api/Servicio/api/PostServicio.Then通过在postman中选择原始json来发布来自body的数据。
参考资料:
https://stackoverflow.com/questions/66254710
复制相似问题