2016-04-27 7 views
1

これは私の最初のWebアプリケーションで、最初のWebアプリケーションであり、Iveはswashbucklerを使ってswaggerを初めて使用しました。 私は機器データベースのテーブルにTPHを使用しています。
たとえば、機器から継承したいくつかの子クラスを持つ機器という基本クラスがあります。 (これは実際のコードではありませんので、私はすべてのパブリックなどを入れていません)
私のブラウザでスワッガーを実行すると、モデルの説明は機材クラスのモデルを返すだけです
私はどのように表示するかを尋ねました可能なすべてのモデルですが、C#、またはドキュメンテーションのコメントを使用するAPIコントローラに関係しないため、返信を理解できません。また、これ以上のことを私が理解している人のために書かれています。
誰でもサンプルを投稿したり、初心者のチュートリアルを教えてください。どのようにしてすべての可能なモデルを表示するかについて教えてください。私はこれを回避するためにいくつかの異なるAPIコールを書く必要がありました。ちょうどモデルが表示されます。
おかげ
c#、web api、swashbuckler/swagger

class equipment 
{ 
    public int id{get;set;} 
    public int foo{get;set;} 
    public int bar{get;set;} 
} 

class bucket : equipment 
{  
    public int booboo{get;set;} 
} 
class mop : equipment 
{ 
    public int lala{get;set;} 
} 


// equipmentcontroller class get function 

/// <summary> 
/// Returns a piece of equipment.<br/> 
/// </summary> 
/// <param name="id"></param> 
/// <returns></returns> 
[Route(@"{id:int}"), ResponseType(typeof(equipment))] 
public IHttpActionResult GetMop(int id) 
{ 
    return result != null ? (IHttpActionResult)Ok(GetMop[id]) : NotFound(); 
} 
+0

ワイヤー上でインターフェースと継承を公開するのは悪い考えです(DBエンティティを公開する悪い考え方)、疎結合シリアライザの形式はカスタムハッキングなしでサポートしていません(例wcfやjsonカスタムタイプなど)。それをxsdで記述してください。私が見たすべてのプロジェクトは、誰がそれを引き出してしまったのですか? – user1496062

答えて

1

何を示唆していることはできません。 Swaggerでは、操作に対する応答の定義は、基本的に、異なるHTTPステータスコードを特定の応答オブジェクトにマッピングすることです。 (http://swagger.io/specification/#responsesObjectをご覧ください)

操作の200 OKは、モップを表す応答またはバケットを表す応答を返すことはできません。

「モデルを表示するだけで、これを回避するためにいくつかの異なるapi呼び出しを記述しなければならなかった」と言います。これはRESTful APIから期待されるものです。異なる種類のリソースは、異なるエンドポイントによって処理されます。

+0

ありがとうRuiaidhri。もし私のクラス(ナイフ、フォーク、スプーンなど)がBaseClass(カトラリー)から継承されている場合は、3つのAPIをGetKnife(id)、GetFork(id)、GetSpoon GetCutlery(id)と応答内にCutlery.CutleryTypeフィールドがありますか? 私はそれがより一般的な単一の機能を持っているだろうと思ったが、それはおそらくより多くのクラスを追加する考えてユーザーコード – Czeshirecat