2013-07-26 51 views
7

我在與顯示使用ServiceStack在招搖正確的音符問題額外的參數。揚鞭UI顯示使用ServiceStack

鑑於這種結構:

[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,類名的請求。任何想法我做錯了什麼?

編輯:我使用的是55年3月9日兩個ServiceStack和ServiceStack.API.Swagger版本。我更改了模板以更好地滿足我們的需求。

+0

你安裝了什麼版本的ServiceStack和ServiceStack.Api.Swagger?您描述的行爲聽起來像是最近的版本,但屏幕截圖顯示了舊版Swagger UI元素。 –

+0

兩者都使用3.9.55。我更改了swagger的模板來創建數據類型行爲,以便在存在類型主體時,它允許您「點擊以獲取詳細信息」,這將爲您提供數據結構。 –

回答

6

有一個recent addition to ServiceStack.Api.Swagger自動生成在揚鞭UI請求主體的參數。我認爲有一個邊界情況,請求DTO沒有沒有被指定爲路徑或查詢參數的屬性,就像你在這裏的情況一樣,代碼仍然會生成請求體參數,但它將是一個空對象昂首闊步。

+0

感謝您的回覆。通常對於更新請求,我可能不會傳入一個int,也不會返回void。這也發生在DELETE謂詞上(這是我發現問題的地方),我認爲這不一定是一個邊緣情況......您將根據唯一的ID刪除記錄。有這個簡單的解決辦法嗎? –

+0

對於使用當前ServiceStack代碼的DELETE動詞,這是正確的。看起來可能會有一些改進。 –

+0

因此,簡而言之,你是說我無法真正解決這個問題嗎?如果這是真的,我可以嘗試找出解決方法。 –