0

我还没有对我的 api 实施版本控制,因为我想先获取更多信息。我正在使用 asp.net web api,并使用 AutoRest 集成到 WPF 应用程序中。它现在已经运行了几个月,但我希望将版本控制与 api 一起使用。

通过从 WPF 到 api 的典型调用,有没有办法针对特定版本的 api?

public async Task<ObservableCollection<EventsDTO>> GetEvents(bool ShowInActive)
    {
        try
        {
            CheckCredentials.CheckValidCredentials();
            using (var db = new BuxtedAPI(CheckCredentials.RestCredentials))
            {       
                var res = await db.GetEventsAsync(ShowInActive).ConfigureAwait(false);
                var obs = new ObservableCollection<EventsDTO>(res);
                return obs;
            }
        }
        catch (Exception ex)
        {
            logger.Error(ex);               
            return null;
        }
    }

提前致谢。

4

1 回答 1

0

如果其他人有这个问题。

 public async Task<ObservableCollection<EventsDTO>> GetEvents(bool ShowInActive)
    {
        try
        {
            CheckCredentials.CheckValidCredentials();
            using (var db = new BuxtedAPI(CheckCredentials.RestCredentials))
            {
                db.HttpClient.DefaultRequestHeaders.Add("X-Version", "2.0");
                var res = await db.GetEventsAsync(ShowInActive).ConfigureAwait(false);
                var obs = new ObservableCollection<EventsDTO>(res);
                return obs;
            }
        }
        catch (Exception ex)
        {
            logger.Error(ex);
            MessageBox.Show(
                $"{ex.Message}{Environment.NewLine}{ex.InnerException?.ToString() ?? ""}");
            return null;
        }
    }

在控制器上

public class EventV2Controller : ApiController
{
    [ApiVersion("2.0")]
    [RoutePrefix("api/events")]

和配置。

  config.AddApiVersioning(cfg =>
        {
            cfg.DefaultApiVersion = new ApiVersion(1, 0);
            cfg.AssumeDefaultVersionWhenUnspecified = true;
            cfg.ReportApiVersions = true;
            cfg.ApiVersionReader = new HeaderApiVersionReader("X-Version");
        });
于 2019-12-20T10:51:58.997 回答