Como o Spring Boot usa @RequestParam para validação de dados

Como o Spring Boot usa @RequestParam para validação de dados

Em aplicativos da Web, os dados enviados pelo usuário geralmente são passados ​​na forma de parâmetros de solicitação. No Spring Boot, @RequestParamas anotações para obter parâmetros de solicitação. Mas como você garante a validade desses parâmetros de solicitação? Neste artigo, apresentaremos como usar @RequestParamanotações para validação de dados e forneceremos alguns exemplos de códigos para ajudá-lo a entender melhor.

insira a descrição da imagem aqui

Introdução ao @RequestParam

No Spring Boot, @RequestParamas anotações são usadas para obter os valores dos parâmetros da solicitação. Por padrão, os parâmetros são obrigatórios e MissingServletRequestParameterExceptionuma exceção . No entanto, você pode usar requiredo atributo para tornar um parâmetro opcional.

Por exemplo, o código a seguir usa @RequestParamanotações para obter idum parâmetro de solicitação chamado:

@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id, @RequestParam Long status) {
    // 处理获取用户逻辑
}

No código acima, @RequestParama anotação é usada para obter o parâmetro de solicitação statuschamado . Uma exceção é lançada se a solicitação não incluir statuso parâmetro MissingServletRequestParameterException.

Data de validade

Para garantir a validade dos parâmetros de solicitação, você pode usar as anotações no javax.validation.constraintspacote para verificar os parâmetros de solicitação. Por exemplo, o código a seguir usa @Minanotações para validar ido valor mínimo do parâmetro:

@GetMapping("/users/{id}")
public User getUser(@PathVariable @Min(1) Long id) {
    // 处理获取用户逻辑
}

No código acima, @Mina anotação é usada para verificar se o valor mínimo do idparâmetro é 1. Se ido argumento for menor que 1, MethodArgumentNotValidExceptionuma exceção será lançada.

Além das @Minanotações , existem muitas outras anotações que podem ser usadas para validar os parâmetros da solicitação. Por exemplo, @Maxas anotações são usadas para verificar o valor máximo de um parâmetro, @NotBlankas anotações são usadas para verificar se uma string não está vazia, @Emailas anotações são usadas para verificar o formato de um endereço de e-mail, etc.

mensagem de erro personalizada

Por padrão, MethodArgumentNotValidExceptionuma exceção . No entanto, você pode usar messageo atributo para especificar uma mensagem de erro personalizada.

Por exemplo, o código a seguir usa uma mensagem de erro personalizada para validar o valor mínimo iddo parâmetro :

@GetMapping("/users/{id}")
public User getUser(@PathVariable @Min(value = 1, message = "id 必须大于等于 1") Long id) {
    // 处理获取用户逻辑
}

No código acima, usamos messageo atributo para especificar uma mensagem de erro personalizada. Se ido argumento for menor que 1, MethodArgumentNotValidExceptionuma exceção será lançada com uma mensagem de erro personalizada.

Cheque combinado

Às vezes, pode ser necessário executar validação combinada em vários parâmetros de solicitação. Por exemplo, talvez seja necessário verificar se starto parâmetro é menor que endo parâmetro. Nesse caso, você pode usar @Validanotações e objetos personalizados para implementar a validação combinada.

Aqui está um exemplo de código que usa um objeto personalizado DateRangepara combinar a soma de verificação starte endos parâmetros :

public class DateRange {
    @NotNull
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate start;

    @NotNull
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate end;

    // getters/setters omitted
}

@GetMapping("/users")
public List<User> getUsers(@Valid DateRange dateRange) {
    // 处理获取用户列表逻辑
}

No código acima, usamos @Validanotações para validar DateRangeo objeto. DateRangeO objeto startcontém endpropriedades e, que @NotNullsão @DateTimeFormatvalidadas usando as anotações e, respectivamente. Se for startmaior que end, MethodArgumentNotValidExceptionuma exceção .

Resumir

Neste artigo, apresentamos como usar @RequestParamanotações para obter parâmetros de solicitação e usar javax.validation.constraintsanotações no pacote para verificar os parâmetros de solicitação. Também mostramos como aumentar a flexibilidade da validação de dados usando mensagens de erro personalizadas e validações combinadas. Por meio desses códigos de exemplo, você pode entender melhor como usar @RequestParampara .

Aqui está o código de exemplo completo:

@RestController
public class UserController {
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable @Min(value = 1, message = "id 必须大于等于 1") Long id) {
        // 处理获取用户逻辑
    }

    public class DateRange {
        @NotNull
        @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
        private LocalDate start;

        @NotNull
        @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
        private LocalDate end;

        // getters/setters omitted
    }

    @GetMapping("/users")
    public List<User> getUsers(@Valid DateRange dateRange) {
        // 处理获取用户列表逻辑
    }
}

Espero que este artigo seja útil para você, obrigado pela leitura!

Acho que você gosta

Origin blog.csdn.net/2302_77835532/article/details/131341713
Recomendado
Clasificación