私はREST MVCプロジェクトに取り組んでいます。 APIプロジェクトのバージョン管理について調べるASP.Net APIバージョン管理の問題
要求は別のASP.NET MVCプロジェクトに送信され、別のプロジェクトの別のクライアントエージェントに送信されます。最後に、クライアントエージェントは要求をAPIプロジェクト(ASP.Netコア)に流します。
バージョン管理はAPIプロジェクト上に行われます。
私は自分のAPIのいずれかでクイックバージョン管理を実装しており、うまく動作します。しかし、私がやったやり方は私の問題です。私は 'Client Agent'プロジェクトの要求されたURLに実際のバージョン(v1.0)をハードコードしています。 APIの必要なバージョンをどこで指定する必要があるかを知る必要があります。私はそれがクライアント側(javascriptかもしれない)からでなければならないということです。お知らせ下さい。
ルートは常にこれに基づいているので、私は、ルート規則を実装しました:
「API/V {バージョン:apiVersion} /コントローラ」
しかし、私はまだ指定する方法を、知りませんClient Agentプロジェクトに入る前のバージョン。
public class RouteConvention : IApplicationModelConvention
{
//private readonly AttributeRouteModel _centralPrefix;
private readonly string _versionConstraintTemplate;
private readonly string _versionedControllerTemplate;
public RouteConvention() //IRouteTemplateProvider routeTemplateProvider
{
//_centralPrefix = new AttributeRouteModel(routeTemplateProvider);
_versionConstraintTemplate = "v{version:apiVersion}";
_versionedControllerTemplate = $"{_versionConstraintTemplate}/[controller]";
}
public void Apply(ApplicationModel application)
{
foreach (var applicationController in application.Controllers)
{
foreach (var applicationControllerSelector in applicationController.Selectors)
{
if (applicationControllerSelector.AttributeRouteModel != null)
{
var versionedConstraintRouteModel = new AttributeRouteModel
{
Template = _versionConstraintTemplate
};
applicationControllerSelector.AttributeRouteModel =
AttributeRouteModel.CombineAttributeRouteModel(versionedConstraintRouteModel,
applicationControllerSelector.AttributeRouteModel);
}
else
{
applicationControllerSelector.AttributeRouteModel = new AttributeRouteModel
{
Template = _versionedControllerTemplate
};
}
}
}
}
}
は、クライアントは多くの方法で必要なバージョンを指定することができ