1

私はばかげているに違いありませんが、ServiceStack の SwaggerFeatureに対して [Api] 属性を実際に使用するとどうなるかわかりません。

[Api] にタグを付けなくても、API が Swagger に表示されるかどうかに影響しないようで、[Api("Service Description")] のように使用するとどこにもレンダリングされた説明が見つかりません。

私の使用法は次のようなものです:

[Api("Monkey Service Description")]
[Route("/zoo/monkey/{Id}", "GET", Summary = "Get MonkeyDocument by Id", Notes = "Returns a MonkeyDocument based on Id")]
public class GetMonkey : GetAnimal, IReturn<MonkeyDocument> // GetAnimal Has Id property
{
}

Swagger-UI では、展開すると次のように結果がページに表示されます。

/zoo              Show/Hide List Operations Expand Operations Raw

 + GET /zoo/monkey/{Id}                  Get MonkeyDocument by Id
      Implementation Notes
      Returns a MonkeyDocument based on Id
4

1 に答える 1

3

ApiAttributeSwagger 関連の機能では使用されなくなりました。私が見つけた唯一の使用法は、メタデータ ページに関連するものです。

サービス エンドポイントを記述するために を使用することはRouteAttribute、Swagger でルートを文書化する正しい方法です。SwaggerApiServiceのソースとそのユニットest を参照して、Swagger で API を文書化するために使用できる属性などについて詳しく知ることができます。

編集

実際、コメントで述べたように、ApiAttributeDescription値は Swagger UI クライアントに返されています。たとえば、最初の Resources リクエストから返された JSON は次のようになります。

{
  "swaggerVersion":"1.1",
  "basePath":"http://localhost/api",
  "apis":[
     {"path":"/resource/zoo","description":"Monkey Service Description"}, ...
  ]
}

この特定descriptionの値はRoute、Swagger UI でレンダリングされ、別の Ajax 要求から返される属性記述値とは別のものです。説明のApiAttribute値は、Swagger UI クライアントに返され、SwaggerResourceswagger.js のオブジェクトに格納されますが、画面にはまったく表示されないようです。少なくとも ServiceStack で使用されている Swagger の現在のバージョンでは。

これは、特定の DTO のメタデータ ページで Api および Route 属性がどのように使用されるかを示すスクリーン ショットです。違いを示すために、同じ DTO クラスに 2 つのルートを設定しました。

ここに画像の説明を入力

于 2013-10-18T12:16:55.160 に答える