2013-07-26 9 views
7

Ich habe Probleme mit der Anzeige der richtigen Notizen in Swagger mit ServiceStack.Swagger UI Anzeige zusätzlicher Parameter mit ServiceStack

Aufgrund dieser Struktur:

[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 
     } 
    } 

Es produziert: Swagger UI Error

würde ich die Parameter Liste erwartet nur WidgetId haben, aber es ist WidgetId und UpdageReqWidget anzeigt, die Klassennamen für die Anforderung. irgendwelche Ideen, was ich falsch mache?

EDIT: Ich verwende Versionen 3.9.55 für ServiceStack und ServiceStack.API.Swagger. Ich habe die Vorlagen geändert, um unseren Anforderungen besser gerecht zu werden.

+0

Welche Version von ServiceStack und ServiceStack.Api.Swagger haben Sie installiert? Das Verhalten, das Sie beschreiben, klingt wie eine aktuelle Version, aber der Screenshot zeigt eine ältere Version der Swagger UI-Elemente. –

+0

mit 3.9.55 auf beiden. Ich habe die Templates für Swagger geändert, um das Verhalten des Datentyps zu ändern, so dass Sie bei einem Textkörper "auf Details klicken" können und die Datenstruktur erhalten. –

Antwort

6

Es gibt eine recent addition to ServiceStack.Api.Swagger, um automatisch einen Anfragetext in der Swagger UI zu generieren. Ich denke, dass es einen Randfall gibt, in dem der Anforderungs-DTO keine Eigenschaften hat, die nicht als Pfad- oder Abfrageparameter angegeben sind, da der Code in diesem Fall immer noch den UpdateReqWidget Anforderungs-Body-Parameter generiert, aber ein leeres Objekt ist Stolzieren.

+0

Danke für Ihre Antwort. Normalerweise würde ich für Update-Anfragen wahrscheinlich nicht nur ein int übergeben, noch void zurückgeben. Das passiert auch beim DELETE-Verb (wo ich das Problem entdeckt habe), was ich nicht für einen Randfall halten würde ... Sie würden einen Datensatz löschen, der auf einer eindeutigen ID basiert. Gibt es eine einfache Lösung dafür? –

+0

Sie haben Recht, dass dies mit dem DELETE-Verb mit dem aktuellen ServiceStack-Code passieren würde. Sieht so aus, als könnte es einige Verbesserungen geben. –

+0

Kurz gesagt, sagst du, dass ich das nicht wirklich aus der Box reparieren kann? Wenn das stimmt, kann ich versuchen, einen Workaround zu finden. –

Verwandte Themen