2016-04-27 7 views
1

Dies ist meine erste Web-API, erste Web-App, und das erste Mal habe ich Swagger über Swashbuckler verwendet. Ich verwende TPH für meine Geräte-DB-Tabelle.
Zum Beispiel habe ich Basisklasse namens Ausrüstung mit mehreren Kindklassen von Geräten geerbt. (Dies ist nicht wirklich Code, so dass ich nicht in alle Öffentlichkeiten etc.)
Wie ich sorta erwarte, die Modellbeschreibung, wenn ich Swagger in meinem Browser laufen, gibt nur das Modell für die Geräteklasse Ich habe gegooglet, wie zu zeigen alle möglichen Modelle aber können die Antworten nicht verstehen, da sie sich nicht auf C# beziehen, oder API-Controller, die Kommentare für die Dokumentation verwenden, oder sie sind für Leute geschrieben, die das mehr verstehen als ich.
ist jemand in der Lage, ein Beispiel zu veröffentlichen, oder zeigen Sie mir ein Anfänger-Tutorial bitte, wie Sie alle möglichen Modelle swagger anzeigen. Ich musste mehrere verschiedene API-Aufrufe schreiben, um das zu umgehen, nur damit die Modelle angezeigt werden.
dank
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

Es ist eine schlechte Idee, Schnittstellen und Vererbung auf der Leitung offenzulegen (und eine schlechtere, um Ihre DB-Entities zu entlarven), keine Form von lose gekoppelten Serialisierer unterstützt es ohne benutzerdefinierte Hacks (z. B. wcf oder json benutzerdefinierten Typ) z. B. wie Sie denken Beschreibe es in xsd. Alle Projekte, die ich gesehen habe, die das gemacht haben, haben es letztendlich rausgeholt. – user1496062

Antwort

1

Was Sie vorschlagen, ist nicht möglich. In Swagger ist die Definition von Antworten für eine Operation im Grunde genommen eine Zuordnung verschiedener HTTP-Statuscodes zu bestimmten Antwortobjekten. (Siehe http://swagger.io/specification/#responsesObject)

Es ist nicht möglich für Sie zu repräsentieren, dass ein 200 OK für eine Operation entweder eine Antwort zurückgeben könnte, die einen Mop darstellt, oder eine Antwort, die einen Bucket darstellt.

Sie erwähnen "Ich musste mehrere verschiedene API-Aufrufe schreiben, um dies zu umgehen, nur damit die Modelle angezeigt werden.", Das ist, was ich von einer REST-API erwarten würde. Verschiedene Arten von Ressourcen werden von verschiedenen Endpunkten behandelt.

+0

Danke Ruiaidhri. Wenn alle 3 meiner Klassen (zB Messer, Gabel, Löffel) von BaseClass (Besteck) geerbt werden, ist es am besten, 3 API-Aufrufe GetKnife (id), GetFork (id), GetSpoon (id) oder nur die eine API zu haben GetCutlery (id) und in der Antwort haben ein Cutlery.CutleryType Feld? Ich dachte, es würde es allgemeiner machen, die einzelne Funktion zu haben, aber darüber nachzudenken, könnte das Hinzufügen von mehr Klassen Benutzercode brechen – Czeshirecat