1

ルートで設定されたすべてのリクエスト/レスポンス DTO を反復処理するにはどうすればよいですか?

たとえば、次のようなルートです。

[Route("/api/something", "GET")]
public class SomethingGetRequest : IReturn<List<Something>>
{
    public int SomethingId { get; set; }
}

および次のような応答 DTO:

public class Something
{
    public string A { get; set; }
    public int B { get; set; }
}

すべてのセットアップ ルートを反復処理し、次のものを取得できるサービス アクションが必要です。

  • リクエストURL
  • クラス名
  • リクエストのプロパティ
  • 応答 DTO プロパティ

これを行う方法で組み込まれた Servicestack はありますか?

最後に、これを使用して ExtJS ストア/モデルを自動生成したいと思います。また、より良い/代替アプローチにも興味があります。

編集:

これが私が思いついた解決策です:要旨

/extjs/javascriptルート上でサービスは extjs ストア/モデルを返し、ルート上で/extjs/metadataサービスはストア/モデル フォルダを含む zip ファイルを返し、新しく作成された Sencha Architect プロジェクトにドロップできます。テンプレートは、Architect v. 3.0.1.1343 が生成するものに基づいています。

これは、次のように装飾されたルートを想定しています。

[Route("/api/something", "GET", Summary="route description")]
public class SomethingGetRequest : IReturn<List<Something>>
{

    [ApiMember(Name = "SomethingId", ParameterType = "query", IsRequired = true, DataType = "int")]
    public string SomethingId { get; set; }

}

現在の実装は、要求/応答 DTO の単純なプロパティに対してのみ機能します。改善の余地あり…

4

1 に答える 1

1

ServiceStack.Api.Swaggerパッケージ (ドキュメントはこちら)を見ましたか? それはあなたが望むものとかなり似ています。

Swagger UI がそのままでは機能しない場合は、ServiceStack.Api.Swagger パッケージを使用して、/resourcesおよびその関連 URL にリクエストを送信し、すべてのメタデータを JSON 形式で取得してから、必要に応じてそのデータを処理することができます。 . または、C# で何かを記述したい場合は、SwaggerApiService と SwaggerResourcesServiceのコードを参照して、すべての DTO とルーティングを取得し、それらに関するメタデータを抽出する方法を確認してください。

于 2014-01-31T21:47:12.830 に答える