首页 > 解决方案 > 将两个参数传递给 api 时出现 404

问题描述

我正在尝试在 .net core 3.1 上制作一个简单的 api,我删除了默认的东西。我提出了一个新的起点,但尽管付出了很多努力和改变,我仍然得到了 404

app.UseEndpoints(endpoints =>
{
                endpoints.MapControllers();
});

在属性中,启动资源管理器:

api/Servicio/GetServicio/tecnico/Pedro/semanaDelAno/8

控制器

[Route("api/Servicio")]
    public class ServicioController : Controller
    {
        private readonly ApplicationDbContext _context;

        public ServicioController(ApplicationDbContext context)
        {
            _context = context;
        }

        // POST: api/PostServicio
        [HttpPost]
        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("{tecnico}/{semanaDelAno}")]
        [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;
        }

标签: c#asp.net-mvcapiasp.net-core.net-core

解决方案


假设 tecnico=Pedro 和 semanaDelAno=8,你必须使用这个 url

~/api/Servicio/GetServicio/Pedro/8

对于 GetServicio 操作:

[HttpGet("GetServicio/{tecnico}/{semanaDelAno}")]
public async Task<ActionResult<Servicio>> GetServicio(string tecnico, int semanaDelAno)
{
.... your code
}

推荐阅读