分页问题,vue项目配置,@PathVariable的作用,请求类型path和query的区别,@Range的用法

查询用get,其他用post。

500:服务端请求问题。
400:客户端问题。

分页问题(不全,第四阶段day07 vue脚手架)

@SpringBootTest
public class PageHelperTests {

    @Autowired
    TagMapper mapper;

    @Test
    void listTagType() {
        Integer pageNum = 2; // 页码,从1开始顺序编号
        Integer pageSize = 2; // 每页多少条数据
        PageHelper.startPage(pageNum, pageSize); // 设计分页参数
        List<?> list = mapper.listTagType(); // 【注意】必须紧随“PageHelper.startPage()”之后,否则,可能产生线程安全问题
        System.out.println("查询列表完成,列表类型:" + list.getClass().getName());
        System.out.println(list);
        System.out.println("列表项的数量:" + list.size());
        for (Object item : list) {
            System.out.println("列表项:" + item);
        }

        System.out.println();
        PageInfo<?> pageInfo = new PageInfo<>(list);
        System.out.println(pageInfo);
    }

}

vue项目配置

运行老师的vue项目之前先npm install一下

npm i qs -S

并在main.js中加入

import qs from 'qs';

Vue.prototype.qs = qs;

@PathVariable的作用

当我们在编写Web应用程序时,通常会使用URL来定义不同的请求路径。有时候,我们需要从URL路径中获取一些参数值,以便在后台处理请求时使用。
举个例子,假设我们有一个URL路径为/users/{id},其中的{id}表示一个用户的唯一标识。我们希望在后台代码中获取这个id值,以便根据用户ID来执行相应的操作。
这时,就可以使用@PathVariable注解。它的作用是告诉框架,我们想要从URL路径中获取特定的变量值,并将其传递给方法的参数。
比如,假设我们有一个控制器方法如下:

@GetMapping("/users/{id}")
public String getUserInfo(@PathVariable Long id) {
    // 根据id查询用户信息
    // ...
    return "user-info";
}

在上面的例子中,@PathVariable Long id表示我们希望从URL路径中获取一个名为id的参数,并将其绑定到方法的id参数上。
当请求路径为/users/123时,@PathVariable注解会将URL中的123提取出来,并将其赋值给id参数。这样,我们就可以在方法中使用id参数来执行相应的逻辑,比如查询用户信息。
总的来说,@PathVariable注解的作用就是从URL路径中提取参数值,并将其传递给方法的参数,以便在后台代码中使用。它使得处理包含变量的URL路径变得更加方便和简洁。

请求类型path和query的区别

在Web开发中,我们可以使用不同的方式向服务器发送请求并传递参数。常见的两种方式是使用路径参数(Path Parameter)和查询参数(Query Parameter)。

  • 路径参数(Path Parameter):路径参数是直接包含在请求的URL路径中的参数。它们用于传递对资源的具体标识或操作。路径参数通常放置在URL的特定位置,使用标识符(比如{})来表示。例如,/users/{id}中的{id}就是一个路径参数。通过路径参数,我们可以指定要操作的资源或执行的具体动作。
  • 查询参数(Query Parameter):查询参数是附加在URL的末尾,以?开始,并使用键值对的形式表示。它们用于传递辅助信息、过滤条件或其他可选参数。查询参数以key=value的形式出现,并使用&进行分隔。例如,/users?name=John&age=25中的nameage就是查询参数。通过查询参数,我们可以向服务器传递额外的参数信息,以便服务器根据这些信息进行相应的处理。
    通俗来说:
  • 路径参数是用于描述资源标识或具体操作的参数,直接包含在URL的路径中,可以理解为URL的一部分,通常用于指定特定的资源或操作。
  • 查询参数是用于传递辅助信息或可选参数的参数,附加在URL的末尾,以?开始,并使用key=value的形式表示,多个参数之间用&分隔,通常用于传递额外的参数信息。

举个例子来说明:
假设我们有一个博客网站,其中有一个页面用于显示特定用户的信息。使用路径参数的URL可能是/users/{id},其中{id}表示用户的唯一标识。而使用查询参数的URL可能是/users?id={id},其中id是查询参数的键,表示用户的唯一标识。
通过路径参数的URL,我们可以直接指定要显示的用户信息,如/users/123。而通过查询参数的URL,我们可以在URL末尾附加额外的参数,如/users?id=123&details=true,这样服务器可以根据details参数的值来决定是否返回详细信息。
总结起来,路径参数是直接包含在URL路径中的参数,用于资源标识或具体操作;而查询参数是附加在URL末尾的参数,用于传递辅助信息或可选参数。

@Range的用法

@Range是Hibernate Validator库中的注解,用于验证数值类型或字符串的取值范围是否符合指定的条件。
@Range注解的用法如下:

@Range(min = minValue, max = maxValue)

其中,minValuemaxValue是数值类型或字符串的最小值和最大值。
@Range注解可以用于以下类型的字段或方法参数:

  • byte, short, int, long及其包装类(Byte, Short, Integer, Long
  • BigDecimalBigInteger
  • doublefloat及其包装类(Double, Float
  • String
    使用@Range注解可以对字段或方法参数进行取值范围的验证,确保其取值在指定的最小值和最大值之间。
    以下是一些示例:
public class Person {
    @Range(min = 18, max = 60)
    private int age;
    // Getters and setters
}

在上述示例中,@Range(min = 18, max = 60)用于验证age字段的值在18到60之间。

public void updateScore(@Range(min = 0, max = 100) int score) {
    // 更新分数逻辑
}

在上述示例中,@Range(min = 0, max = 100)用于验证score参数的值在0到100之间。
如果字段或方法参数的值不在指定的范围内,验证将会失败,并返回相应的验证错误信息。

在实际使用中,你可以使用Hibernate Validator库来进行字段或方法参数的验证。当使用@Range注解进行取值范围验证时,如果字段或方法参数的值不在指定的范围内,验证将会失败,并返回相应的验证错误信息。
下面是一个示例,演示如何在Spring Boot中使用Hibernate Validator进行验证,并处理验证失败的情况:

  1. 首先,确保你的项目中已经引入了Hibernate Validator库的依赖。在Maven项目中,你可以添加以下依赖到你的pom.xml文件中:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  1. 在需要验证的实体类中,添加@Range注解来定义字段的取值范围。例如:
public class Person {
    @Range(min = 18, max = 60, message = "年龄必须在18到60之间")
    private int age;
    // Getters and setters
}
  1. 在需要验证的方法中,添加@Validated注解来启用验证功能,并在需要验证的参数前添加@Valid注解。例如:
@RestController
@Validated
public class MyController {
    @PostMapping("/update-score")
    public ResponseEntity<String> updateScore(@RequestBody @Valid @Range(min = 0, max = 100) int score) {
        // 更新分数逻辑
        return ResponseEntity.ok("分数更新成功");
    }
    // 其他方法
}
  1. 当进行请求时,如果字段或方法参数的值不在指定的范围内,验证将会失败,并返回相应的验证错误信息。你可以使用BindingResult对象来获取验证结果,并根据需要进行处理。例如:
@PostMapping("/update-score")
public ResponseEntity<String> updateScore(@RequestBody @Valid @Range(min = 0, max = 100) int score, BindingResult result) {
    if (result.hasErrors()) {
        List<FieldError> fieldErrors = result.getFieldErrors();
        // 处理验证错误信息
        return ResponseEntity.badRequest().body("验证失败:" + fieldErrors.get(0).getDefaultMessage());
    }
    // 更新分数逻辑
    return ResponseEntity.ok("分数更新成功");
}

在上述示例中,如果请求中的score参数不在0到100之间,验证将会失败,BindingResult对象中将包含相应的验证错误信息。
通过以上步骤,你就可以实现对字段或方法参数的取值范围验证,并进行相应的处理。验证失败时,你可以根据需要返回适当的错误信息给客户端。

需要注意的是,@Range注解只适用于数值类型或字符串。对于其他类型的字段或参数,可以使用不同的注解进行验证。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值