Skip to content

New Services Quick Start

Chris Martinez edited this page Jan 23, 2019 · 12 revisions

When a service author creates new services that consider API versioning upfront, then the configuration and setup is very straightforward. The following examples provide a quick start setup for the respective platforms with default configurations.

API versions can be expressed with .NET attributes or by configured conventions. These examples all use .NET attributes. If you're interested in using conventions instead, please review the API version conventions topic.

ASP.NET Web API

public static class WebApiConfig
{
    public static void Configuration( HttpConfiguration configuration )
    {
        configuration.AddApiVersioning();
        // remaining configuration omitted for brevity
    }
}

[ApiVersion( "1.0" )]
[RoutePrefix( "people" )]
public class PeopleController : ApiController
{
    [Route]
    public IHttpActionResult Get() => Ok( new[] { new Person() } );
}

ASP.NET Web API with OData v4.0

public static class WebApiConfig
{
    public static void Configuration( HttpConfiguration configuration )
    {
        configuration.AddApiVersioning();

        var modelBuilder = new VersionedODataModelBuilder( configuration )
        {
            DefaultModelConfiguration = ( builder, apiVersion ) =>
            {
                builder.EntitySet<Person>( "People" );
            }
        };
        var models = modelBuilder.GetEdmModels();

        configuration.MapVersionedODataRoutes( "odata", null, models );
        // remaining configuration omitted for brevity
    }
}

[ApiVersion( "1.0" )]
[ODataRoutePrefix( "People" )]
public class PeopleController : ODataController
{
    [ODataRoute]
    public IHttpActionResult Get() => Ok( new[] { new Person() } );
}

ASP.NET Core

public class Startup
{
    public void ConfigureServices( IServiceCollection services )
    {
        services.AddMvcCore();
        services.AddApiVersioning();
        // remaining configuration omitted for brevity
    }
}

[ApiVersion( "1.0" )]
[ApiController]
[Route( "[controller]" )]
public class PeopleController : ControllerBase
{
    [HttpGet]
    public IActionResult Get() => Ok( new[] { new Person() } );
}

ASP.NET Core with OData v4.0

public class Startup
{
  public void ConfigureServices( IServiceCollection services )
  {
      services.AddMvcCore();
      services.AddApiVersioning();
      services.AddOData().EnableApiVersioning();
      // remaining configuration omitted for brevity
  }

  public void Configure( IApplicationBuilder app, VersionedODataModelBuilder modelBuilder )
  {
      var models = modelBuilder.GetEdmModels();
      app.UseMvc( routes => routes.MapVersionedODataRoutes( "odata", null, models  ) );
  }
}

[ApiVersion( "1.0" )]
[ODataRoutePrefix( "People" )]
public class PeopleController : ODataController
{
  [ODataRoute]
  public IHttpActionResult Get() => Ok( new[] { new Person() } );
}
Clone this wiki locally