This call works correctly and is mapped to /oData/Projects.
[HttpGet(Name = "GetProjects")]
[EnableQuery]
public IEnumerable<ProjectEntity> Get()
{
return _db.Projects;
}
How can I make pass an argument with out losing the oData prefix in the URL?
This loses the oData Prefix:
[HttpGet("{id}", Name = "GetProjectById")]
[EnableQuery]
public ProjectEntity GetProjectById(int id)
{
return _db.Projects.Where(p => p.Id == id).FirstOrDefault();
}
I am using .net core web api and oData 8.0
Here is the full controller:
[ApiController]
[Route("[controller]")]
public class ProjectsController : ControllerBase
{
private readonly ILogger<ProjectsController> _logger;
private readonly ApplicationDbContext _db;
public ProjectsController(ILogger<ProjectsController> logger, ApplicationDbContext db)
{
_logger = logger;
_db = db;
}
[HttpGet("{id}", Name = "GetProjectById")]
[EnableQuery]
public ProjectEntity GetProjectById(int id)
{
return _db.Projects.Where(p => p.Id == id).FirstOrDefault();
}
[HttpGet(Name = "GetProjects")]
[EnableQuery]
public IEnumerable<ProjectEntity> Get()
{
return _db.Projects;
}
}
Model:Controller:Reference Required:Startup.cs:Output:In addition you could have a look more details on our official blog document here also here is the sample project