Ответ 1
Здесь минимальный объем работы, который вам нужен.
Сначала перейдите там и скопируйте код для следующих трех файлов:
После этого мы изменим метод GetVersion
VersionRangeValidator
для следующего:
public static string GetVersion(HttpRequest request)
{
if (!string.IsNullOrWhiteSpace(request.Headers["api-version"]))
return request.Headers["api-version"];
return "1";
}
Это будет читать заголовок и возвращать версию API. По умолчанию в этом сценарии будет v1
.
Здесь, как использовать его на контроллерах (или это могут быть те же контроллеры с двумя действиями:
[Route("api/data")]
public class DataController
{
[VersionGet("", versionRange: "[1]")]
public string GetData()
{
return "v1 data";
}
}
[Route("api/data")]
public class DataV2Controller
{
[VersionGet("", versionRange: "[2]")]
public string GetData()
{
return "v2 data";
}
}
Итак, теперь вам просто нужно дать ему правильный заголовок, и это хорошо. Этот код был протестирован с помощью jQuery следующим образом:
$(document).ready(function(){
$.ajax({url: '/api/Data/', headers: { 'api-version': 1 }})
.then(function(data){
alert(data);
});
$.ajax({url: '/api/Data/', headers: { 'api-version': 2 }})
.then(function(data){
alert(data);
});
});