2013-07-26 4 views
7

ServiceStackを使用して正しいノートを表示する際に問題があります。それが生産だServiceStackを使用して余分なパラメータを表示するSwagger UI

[Route("/Widget/{WidgetId}", Summary = "Updates a widget by id", Verbs = "POST", 
    Notes = "Updates a widget by id.")] 
    public class UpdateReqWidget : IReturnVoid 
    { 
     [ApiMember(Name = "WidgetId", Description = "The id of widget to delete.")] 
     public int WidgetId { get; set; } 
    } 

    public class WidgetService 
    { 
     public void Put(UpdateReqWidget req) 
     { 
      //do code here 
     } 
    } 

Swagger UI Error

を、私は唯一のwidgetIdがを持っているパラメータのリストを期待するが、それはwidgetIdが及びUpdageReqWidget、要求のクラス名を表示しています

は、この構造を考えます。私が間違っていることは何ですか?

編集:ServiceStackとServiceStack.API.Swaggerの両方でバージョン3.9.55を使用しています。私はニーズに合わせてテンプレートを変更しました。

+0

ServiceStackとServiceStack.Api.Swaggerのどのバージョンをインストールしましたか?あなたが記述する動作は最近のバージョンのように聞こえるが、スクリーンショットはSwagger UI要素の古いバージョンを示している。 –

+0

両方で3.9.55を使用します。私はswaggerのテンプレートを変更してデータ型の振る舞いを作って、型本体があるときに「詳細をクリックする」ことができ、それによってデータ構造が得られるようにしました。 –

答えて

6

Swagger UIにリクエストボディパラメータを自動的に生成するためのrecent addition to ServiceStack.Api.Swaggerがあります。私は、リクエストDTOにパスまたはクエリのパラメータとして指定されていないプロパティがない場合があると思います。この場合、コードは依然としてUpdateReqWidgetリクエストボディパラメータを生成しますが、空のオブジェクトになりますスワッガー。

+0

ご返信ありがとうございます。通常は更新要求のために、私はおそらくちょうどintを渡すことも、voidを返すこともありません。これはまた、私が必ずしも最悪のケースではないと思うDELETE動詞(これは私が問題を発見したところです)でも起こります...一意のIDに基づいてレコードを削除します。これは簡単に修正できますか? –

+0

これは、現行のServiceStackコードでDELETE verbを実行すると正しいことになります。これにいくつかの改善があるように見えます。 –

+0

要するに、私はこれを実際に箱から取り除くことはできないと言っていますか?それが本当であれば、回避策を試すことができます。 –

関連する問題