In letzter Zeit habe ich versucht, die Metadatenseite als Teil unserer Bemühungen zu nutzen, unsere Dokumentation reaktionsfähiger zu machen. Ich fand, dass ApiMember irgendwie nicht mit Projekten funktioniert, die dotnet core verwenden.Wie funktioniert ApiMember bei der Arbeit mit dem Dotnet-Core?
Das ist mein DTO ist, aktualisiert, um den vollständigen Inhalt der dto Definition umfasst
using ServiceStack;
[Api("Test request")]
[Route("/test/{Input}","GET")]
[Route("/test")]
public class TestRequest:IReturn<TestResponse>
{
[ApiMember(Name="Parameter name", Description = "Parameter Description",
ParameterType = "body", DataType = "string", IsRequired = true)]
public string Input { get; set; }
}
public class TestResponse
{
public string Output { get; set; }
}
//Validator
public class TestRequestValidator : AbstractValidator<TestRequest>
{
public TestRequestValidator()
{
RuleFor(r => r.Input).NotEmpty();
}
}
Und ich erwarte, dass der Name und Beschreibung sollten in der Metadaten Seite auftauchen, ist es nicht. Was soll ich machen?
Und wenn ich eine zweite Frage stellen kann, da ich die volle dto habe, muss ich fragen, der Validator (unter Verwendung von Fluentvalidation lib) funktioniert, aber, wie schalte ich es an den Logger? Zum Beispiel, wenn die Eingabe leer ist, möchte ich, dass der Logger diese Information behält, was soll ich tun?
Update: ging ich zu meinem Code zurück, und ich fand, dass, wenn ich meine DTO Testrequest ändern es funktioniert. Insbesondere funktioniert das Folgende.
namespace web
{
[Api("Test request")]
[Route("/test/{Input}", "GET")]
[Route("/test")]
public class TestRequest : IReturn<TestResponse>
{
[ApiMember(Name = "Parameter name", Description = "Parameter Description",
ParameterType = "body", DataType = "string", IsRequired = true)]
public string Input { get; set; }
}
public class TestResponse
{
public string Output { get; set; }
}
}
und dies nicht
[Api("Test request")]
[Route("/test/{Input}", "GET")]
[Route("/test")]
public class TestRequest : IReturn<TestResponse>
{
[ApiMember(Name = "Parameter name", Description = "Parameter Description",
ParameterType = "body", DataType = "string", IsRequired = true)]
public string Input { get; set; }
}
public class TestResponse
{
public string Output { get; set; }
}
Bitte fügen Sie die vollständige Klassendefinition von TestRequest unmodified – mythz
@mythz aktualisiert, jetzt hat es vollständige Definition. Ich habe auch eine andere Frage darüber gestellt, wie man Fluentvalidation-Ergebnisse zum Logger – shawhu
exportiert. Ich habe gerade ein Beispiel-.NET-Core-Projekt erstellt, das wie erwartet funktioniert, also müssen Sie auf die neueste Version upgraden, wenn Sie es nicht schon getan haben. Wenn es noch ein Problem gibt, veröffentlichen Sie ein eigenständiges überprüfbares Beispiel auf GitHub und ich werde es überprüfen. Bitte öffnen Sie neue Fragen, um unverbindliche Fragen zu stellen, aber Sie können den 'ValidationFeature.ErrorResponseFilter'-Hook verwenden, um Fehlerantwort-DTOs abzufangen und anzupassen. – mythz