ASP.NET Core Web API Interview Question #100
What are best practices for routing, versioning, and API documentation?
Routing, Versioning, OpenAPI/Swagger & API Documentation Mid-Level Intermediate
Quick Interview Answer
Use predictable resource-oriented routes, appropriate constraints, and URL generation instead of manually constructing links. Keep public routes stable and avoid unnecessary deep nesting or implementation-oriented action names.
Detailed Explanation
Use predictable resource-oriented routes, appropriate constraints, and URL generation instead of manually constructing links. Keep public routes stable and avoid unnecessary deep nesting or implementation-oriented action names.
Version APIs when incompatible contract evolution requires it, preserve backward compatibility where practical, and use a clear deprecation process. Maintain accurate OpenAPI documentation with request/response schemas, status codes, authentication requirements, and useful descriptions so consumers can integrate without reading server implementation code.
Code Example
[ApiController]
[Route("api/v1/products")]
public class ProductsController : ControllerBase
{
[HttpGet("{id:int}", Name = "GetProductV1")]
[ProducesResponseType<ProductResponse>(200)]
[ProducesResponseType(404)]
public async Task<ActionResult<ProductResponse>> Get(
int id,
CancellationToken token)
{
var item = await _service.GetAsync(id, token);
return item == null ? NotFound() : Ok(item);
}
}