最近,我一直在嘗試利用元數據頁面來成爲我們努力的一部分,以使我們的文檔更具響應能力。我發現ApiMember似乎不能用於使用dotnet核心的項目。如何在使用dotnet核心時使ApiMember正常工作
這是我的DTO,更新,包括DTO定義
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();
}
}
的全部內容,我期待的名稱和說明應在元數據頁面顯示,事實並非如此。我該怎麼辦?
而且,如果我可能會問第2個問題,因爲我有完整的dto,我必須要求驗證器(使用fluentvalidation lib)確實有效,但是,如何將它連接到記錄器?例如,當輸入爲空時,我希望記錄器保存那條信息,我該怎麼辦?
更新: 我回到了我的代碼,我發現,如果我改變我的DTO Testrequest它的工作原理。具體來說,下面的作品。
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; }
}
}
這並不
[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; }
}
請包括完整的類定義TestRequest未修改 – mythz
@mythz更新,現在它有完整的定義。我還問過關於如何將fluentvalidation結果導出到日誌記錄器的另一個問題 – shawhu
我剛剛創建了一個按預期工作的示例.NET Core項目,因此如果尚未完成,則需要升級到最新版本,如果仍有問題,請在GitHub上發佈獨立的可驗證示例,我會檢查一下。請打開新問題以詢問無關的問題,但您可以使用'ValidationFeature.ErrorResponseFilter'鉤子截取並自定義錯誤響應DTO。 – mythz