15

「VersionHeaderVersionedControllerSelector」を使用して、X-Api-Header で API をバージョン管理するために WebAPIバージョニング パッケージを使用しています。また、Microsoft.AspNet.WebApi.HelpPageを使用して、API のドキュメントを自動生成しています。コントローラーのバージョン管理が機能するには、"VersionHeaderVersionedControllerSelector" が次のように要求を適切なバージョンのコントローラーにルーティングできるように、名前空間のサフィックスとして VersionXYZ を使用して名前空間を設定する必要があります。

namespace WEBAPI.Api.Controllers.Version1
{ public class ProductsController : ApiController {} }

namespace WEBAPI.Api.Controllers.Version2
{ public class ProductsController : ApiController {} }

これは意図したとおりに機能しますが、生成されたヘルプ ページを見ると、ApiDescriptionの ID ( GETapi/Version1.Products ) および RelativePath( api/Version1.Products ) プロパティに名前空間の "VersionXYZ" サフィックスが含まれています。理想的には、API バージョン番号とドリルインだけで API を通常の方法で表示するトップレベルのヘルプ ページを用意することです。つまり、ApiDescription.ID = GETapi/Products と ApiDescription.RelativePath = api/Products

Out of the Box API を使用してこれを達成する方法はありますか、それとも ApiExplorerの独自の実装をロールアウトする必要がありますか?

4

2 に答える 2

1

この回答を確認してくださいGet Help page works with Api Versioning

バージョン管理権限が構成されていることを確認し、プロジェクト XXXX.Api.v1 プロジェクトからドキュメント XML ファイルを取得して、それを XXXX.Api プロジェクトの bin フォルダーに配置する必要があります。

于 2014-11-23T13:23:25.977 に答える
0

残念ながら、ApiExplorer は重複したコントローラー名をサポートしていません。したがって、この方法でコントローラーのバージョン管理を実装すると、ユーザー (またはパッケージ コード) がシステムでうまく機能しなくなります。

実際にコントローラー名を変更する別の方法を検討してください (もちろん、独自のソリューションを実装する必要がありますが、正直なところそれほど複雑ではありません)。たとえば、バージョンを (名前空間ではなく) コントローラー名自体の一部にします。

例: Ver1_ProcuctsController

これで、これらがヘルプ ページに表示され始めます。ヘルプ ページは単なるコンテンツ パッケージであるため、ロジックを変更して、verxxx_ で始まる名前を変化させることができます。

于 2014-10-08T15:26:53.350 に答える