3

ServiceStack (新しい API を使用) を使用して、DTO を検証しようとしています。検証をシミュレートするための簡単なコードを作成しましたが、明らかに起動していないか、少なくとも期待どおりに応答にエラーが表示されていません。私のコードは次のとおりです。

DTO:

[Route("/users/login")]
public class UserLogin
{
    public string Email { get; set; }
    public string Password { get; set; }
}

バリデータ自体:

public class UserLoginValidator : AbstractValidator<UserLogin>
{
    public UserLoginValidator()
    {
        RuleSet(ApplyTo.Get, () =>
        {
            RuleFor(x => x.Email).NotEmpty().WithMessage("Please enter your e-mail.");
            RuleFor(x => x.Email).EmailAddress().WithMessage("Invalid e-mail.");
            RuleFor(x => x.Password).NotEmpty().WithMessage("Please enter your password.");
        });
    }
}

ホストでの検証の構成:

Plugins.Add(new ValidationFeature());
container.RegisterValidators(typeof(UserLoginValidator).Assembly);

そしてサービス:

public class LoginService : Service
{   
    public object Get(UserLogin request)
    {
        var response = new { SessionId = Guid.NewGuid() };
        return response;
    }
}

それを機能させるために行う必要がある他の構成または調整はありますか?

ありがとう!

4

1 に答える 1

2

ドキュメントから

注: 応答 DTO は、{Request DTO} 応答の命名規則に従う必要があり、要求 DTO と同じ名前空間にある必要があります。

応答用のクラスを作成してみてください

public class UserLoginResponse
{
    public UserLogin Result { get; set; }
}

そして、それを返します

public class LoginService : Service
{   
    public object Get(UserLogin request)
    {
        var response = new UserLoginResponse { Result = request };
        return response;
    }
}
于 2012-12-14T13:50:56.367 に答える