spring boot(Http、注解、接口测试工具postman)-上

YApi:http://yapi.smart-xwork.cn/
超链接标签:href:指定访问资源的URL
target:指定打开资源的方式
self:默认值,在当前页面打开_blank:在空白页面打开

springinitial勾选Spring Web

@springBootApplication //启动类注解
@RestController //请求处理类的注解

@RequestMapping("/hello") //浏览器将来处理/hello这个地址最终就会调用这个方法

http特点
基于tcp:面向连接,安全(每次请求前都先进行三次握手。连接完了之后/确定双方都有收发能力,再传输数据,这样不容易丢数据包更安全)
基于请求-响应模型的:一次请求对应一次响应
是无状态协议,每一次请求响应都是独立的,后一次请求不会记录前一次请求数据的
缺点:多次请求之间不能进行响应共享
优点:速度快

http请求协议(数据的格式)
分为三部分,请求行,请求头和请求体
请求行:请求数据的第一行:请求方式 资源路径 协议和协议版本
请求头:第二行到json之前。常见的请求头:user-agent浏览器版本(用于浏览器的兼容性处理)、accept接受的资源类型、content-length主体的字节大小、content-type主体的数据类型

请求体:存放请求参数。
get请求没有请求体而post有。get的请求参数在请求行里,在请求路径后面跟上?key=value&key……get请求大小有限制。然而post是参数在请求体当中,大小没有限制

http响应协议(数据的格式)
响应行、响应头和响应体
响应行:协议和协议版本 响应状态码(成功是200) 描述(描述前面的状态)
响应头:第二行开始,格式key:value
响应体:最后一部分,放响应数据

关于响应状态码
2XX成功
3XX重定向(大概意思是浏览器的服务器A给一个响应意思资源在B去访问B再获取资源,当然A和B有可能是同一个服务器只是资源的位置不同)
4XX客户端错误(检查客户端的请求路径,请求参数是否正确,再或者禁止访问,未被授权)
5XX服务端错误(检查服务端的日志是否有异常产生)

tomcat

关于tomcat因为默认字符码是gbk所以要把utf-8改为gbk才不会显示中文乱码
conf/loggiing.properties

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK

springboot内嵌tomcat

postman(接口测试工具)
workspaces创建工作空间,用于保存测试数据,同步到云端
关于创建workspaces关闭overview点击+添加请求首先选择get还是post
通过获取url来设置参数,继而测试请求响应是否畅通

如果方法形参名称与请求参数名称不匹配,可以使用@RequestParam完成手动映射
这个@RequestParam(name = "name")这个括号里的name 或者 value都可以
这个注解里有个省略的默认参数required为true,也就是必须传递。可以修改为false来表示不必须传递

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name")String username ,Integer age){

  System.out.println(username + " : " + age);
  return "OK";

}

关于请求参数的接收

关于使用数组或者集合来接收参数
数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装
集合: 请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系
数组接收参数
形参是数组,只需要形参数组名与请求参数名保持一致,即可把两个参数封装进数组


使用postman直接请求参数为hobby=game&hobby=java
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
    System.out.println(Arrays.toString(hobby));
    return "OK";
}

集合接收参数
因为默认情况下,多个参数的值会封装到数组当中,所以对于集合List就要用到注解@RequestParam

@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
  System.outprintln(hobby);
  return "OK";
}

日期参数
仍然需要保持请求参数与方法形参的名字保持一致
指定注解@DateTimeFormat为日期格式参数

@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
    System.out.println(updateTime);
    return "OK";
}

Json参数

在postman中测试接口Post请求一般使用body来标注参数,一般选用form格式
然而Json选择body和raw并且确认Json格式传输数据,最后那个Json一定要重新点一下
关于实体对象,前面使用@RequestBody注解来标识,就可以将json格式的请求数据直接封装到实体对象中

@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
    System.outprintln(user);
    return "OK";
}

路径参数
既是传递的参数又是请求路径url的一部分。
请求路径http://localhost:8080/path/100
因为这个100作为参数是不固定的所以在写注解后面紧跟路径时就不能写@RequestMapping("/path/100")
@PathVariable 通过注解来指定路径参数

@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
    System.out.println(id);
    return "Ok";
}
```
关于多个路径参数的获取
posted @ 2024-01-24 10:21  launch  阅读(63)  评论(0编辑  收藏  举报