【问题标题】:Postman returning not found 404 in api of .net core邮递员在 .net 核心的 api 中返回未找到 404
【发布时间】:2021-05-21 02:17:09
【问题描述】:

net core 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;
        }

现在可以了

【问题讨论】:

    标签: api asp.net-core controller postman


    【解决方案1】:

    确保您的请求网址为:https://localhost:portNumber/api/Servicio/api/PostServicio/xxx.xxx 与 {servicio} 匹配。

    但实际上我认为没有必要将{servicio}添加到您的HttpGet属性。因为您从body而不是路由发布数据。所以这里的{servicio}是没用的。只需使用[HttpPost("api/PostServicio")]和请求url:https://localhost:portNumber/api/Servicio/api/PostServicio.然后通过在邮递员中选择原始json从body中发布数据。

    参考:

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-5.0#attribute-routing-with-http-verb-attributes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2020-08-02
      相关资源
      最近更新 更多