Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Postman getting 404 error for simple ASP.NET Core Web API

I have set up a very simple ASP.NET Core 2.1 Web API project, and have created to following simple controller that fetches entites using EF Core.

The problem is that when trying to access the GetEntities method using Postman, the response is a 404 error. I used an HTTP GET method on the following URL.

https://localhost:44311/api/entities

The response body contains the message <pre>Cannot GET /api/entities</pre>.

Why is Postman receiving a 404 error for this route?

EntitiesController.cs

namespace MyProject.Controllers
{
    [Route("api/controller")]
    public class EntitiesController : Controller
    {
        private readonly ApplicationDbContext dbContext;

        public EntitiesController(ApplicationDbContext _dbContext)
        {
            this.dbContext = _dbContext;
        }

        [HttpGet]
        public IActionResult GetEntities()
        {
            var result = dbContext.Entities.ToListAsync();
            return Ok(result);
        }
    }
}
like image 975
crayden Avatar asked Jul 21 '18 23:07

crayden


1 Answers

Why is Postman receiving a 404 error for this route?

The issue was the controller token [controller] was missing from the route template on the controller, causing the route to be hard-coded to api/controller.

That meant that when requesting api/entities it technically did not exist and thus 404 Not Found when requested.

Update the route template on the controller.

[Route("api/[controller]")]
public class EntitiesController : Controller {
    private readonly ApplicationDbContext dbContext;

    public EntitiesController(ApplicationDbContext _dbContext) {
        this.dbContext = _dbContext;
    }

    //GET api/entities
    [HttpGet]
    public async Task<IActionResult> GetEntities() {
        var result = await dbContext.Entities.ToListAsync();
        return Ok(result);
    }
}

Reference Routing to controller actions in ASP.NET Core : Token replacement in route templates ([controller], [action], [area])

like image 88
Nkosi Avatar answered Sep 29 '22 08:09

Nkosi