2017-11-23 1 views
1

Ich habe ein DTO, die ich für Aktie und Methode GET, und ich möchte für GET-Methode ein zusätzliches Feld haben, so dass ich versuchte, es wie folgt aus:ServiceStack - ApiMember Verb - funktioniert nicht

//... 
[ApiMember(Name = "Status", Verb = "GET", Description = "Status", DataType = "string")] 
     public string Status { get; set; } 
//... 

Aber aus irgendeinem Grund wird es immer noch in Swagger-UI für beide Methoden in der Dokumentation angezeigt.

Verb sagt: Gets or sets verb to which applies attribute. By default applies to all verbs.

Antwort

0

Die Metadatenattribute sie verwendet werden nur dokumentieren nicht das Verhalten oder das Schema eines Dienstes ändern.

Wenn Sie Dienstleistungen wollen ein anderes Schema für GET und POST-Requests sie in unterschiedlichen Antrag DTOs sein müssen, die jeweils mit nur die Felder, die für jedes Verb verfügbar sind, zB:

[Route("/customers", "GET")] 
class GetCustomer { ... } 

[Route("/customers")] 
class StoreCustomer { ... } 

public class MyServices : Service 
{ 
    public object Get(GetCustomer request) => ...; 

    public object Any(StoreCustomer request) => ...; 
} 
+0

Also, was dann Dieses 'Verb' in' ApiMemberAttribute' repräsentiert? Oh, nvm, ich lese gerade deine Antwort wieder ... Ok, tnx. – ShP

+0

@ShP Wenn Sie mehrere Routen haben, können Sie damit dokumentieren, wie sie für eine bestimmte Route aussehen soll, indem Sie auch die Route angeben, auf die sie angewendet wird. Z.B. Sie können es in eine Pfadvariable verschieben mit: '[ApiMember (Route ="/Kunden/{Status} ", Verb =" GET ", ParameterType =" Pfad "]' – mythz

+0

Ich sehe, danke.Ich dachte, es kann verwendet werden wie ich schon früher im DTO erwähnt habe und dann nur ein bisschen mit Verb GET - POST - DELETE - PUT herumspielen, wäre es cool diese Option zu haben ... – ShP

Verwandte Themen