使用Route属性来配置API控制器路由
示例代码:
[Route("api/[controller]")] [ApiController] public class ProductsController : ControllerBase { // GET: api/products [HttpGet] public IActionResult Get() { return Ok("Get all products"); }
// GET: api/products/5
[HttpGet("{id}")]
public IActionResult Get(int id)
{
return Ok($"Get product with id: {id}");
}
// POST: api/products
[HttpPost]
public IActionResult Post([FromBody] Product product)
{
return Ok($"Create new product: {product.Name}");
}
// PUT: api/products/5
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] Product product)
{
return Ok($"Update product with id: {id}");
}
// DELETE: api/products/5
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
return Ok($"Delete product with id: {id}");
}
}
在这个示例中,我们使用了Route属性来指定API控制器的路由前缀:'api/products”。在每个API操作的方法上,我们使用Http谓词属性(如HttpGet,HttpPost等)和路径参数(如{id})来定义API操作的路由。这种方式可以避免在API控制器类上使用RoutePrefix属性而导致的路由属性问题。