With ASP.NET Core there are various attributes that instruct the framework where to expect data as part of an HTTP request - whether the body, header, query-string, etc. With C#, attributes make decorating API endpoints expressive, readable, declarative and simple. These attributes are very powerful! They allow aliasing, route-templating and strong-typing through data binding; however, knowing which are best suited for each HTTP verb, is vital. e.g. Route Attribute ASP.NET Core provides a powerful Route attribute. This can be used to define a top-level route at the controller class – doing so leaves a common route that actions can expand upon. For example consider the following: [Route( "api/[Controller]" )] public class OrdersController : Controller { [HttpGet( "{id}" )] public Task<Order> Get([FromRoute] int id) => _orderService.GetOrderAsync(id); The Route attribute ...