SpringBoot-web开发-请求与响应

本文介绍了在SpringBoot应用中处理HTTP请求的不同方式,包括简单参数、使用@RequestParam、@PathVariable、实体参数、数组和集合参数、日期参数以及JSON参数。同时,展示了如何构造响应,使用Result类封装状态码、消息和数据,以JSON格式返回。
摘要由CSDN通过智能技术生成

请求与响应

BS架构

bs架构

cs(客户端服务架构模式)是需要下载相应的软件来与服务端进行交互

请求

简单参数

  • 通过最原始的httpservletrequest来获取请求数据

在idea中编写代码,启动springboot,然后使用postman工具模拟发起请求.

代码:

@RestController
public class SimpleRequest {

    @RequestMapping("/simplePara")
    public String simplePara(HttpServletRequest request)
    {

        String name=request.getParameter("name");
        String ageStr =request.getParameter("age");
        int age=Integer.parseInt(ageStr);
        System.out.println(name + " " + age);

        return "OK";
    }

}

postman工具的请求书写:,根据上面代码得到返回值为ok

postaman的请求书写

繁琐不推荐,还需手动转换数据

  • SpringBoot方式

参数名与形参名相同即可获取数据

代码:

@RequestMapping("/simplePara")
    public String simplePara(String name,String age)
    {
        System.out.println(name + " " + age);
        return "OK";
    }

RequestParam注解中的required 默认为true,如果请求中没有对应的数据就会报错,如果设置为false就是可选的(传或不传都行)

在这里插入图片描述
在这里插入图片描述

实体参数

当对象的属性较多时,我们可以尝试去封装成一个javabean对象然后通过传递对象到方法

代码:

@RequestMapping("/simplePogo")
public String simplePara(User user)
{
    System.out.println(user);
    return "OK";
}

数组参数集合

请求参数名与形参数组名称相同且请求参数为多个时,定义数组类型形参即可接受数据

  • 使用数组来接收
    代码:
//使用数组来接收
    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby)
    {
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }
  • 使用集合来接收

请求参数多个,请求参数名与集合名称相同,需要使用@RequestParam绑定参数关系

//使用集合来接收
    @RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby)
    {
        System.out.println(hobby);
        return "OK";
    }

日期参数

需使用@DateTimeFormat来规定日期格式,规定请求里面的日期格式 LocalDateTime类是jdk中已经存在的

代码:

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

JSON参数

JSON的key名应与形参对象属性名相同,形参前面需用@RequestBody来标识

Json对象的请求:
Json对象的请求

服务端交互的代码:

@RequestMapping("/JsonParam")
    public String dateParam(@RequestBody User user)
    {
        System.out.println(user);
        return "OK";
    }

user对象和address对象是属于包含类的关系,此时我们可以重新创建一个address类,然后在user类中定义address对象,然后重写toString方法

    private String name;
    private String age;
    private address address;//引用对象
    
.....//中间省略...

	 public String toString() {
        return "User{name = " + name + ", age = " + age + ", address= " + address + "}";
    }

路径参数

路径后面的参数要是可变的,要在形参中添加@PathVariable 来修饰id

 @RequestMapping("/path/{id}/{name}")
    public String pathParam(@PathVariable Integer id,@PathVariable String name)
    {
        System.out.println(id);
        System.out.println(name);
        return "OK";
    }

响应

为了使响应的格式更加完整,可以将所有的数据封装到一个result类当中,result包括状态码,提示信息,数据.返回的数据会已json的形式返回

result代码

/**
 * 统一响应结果封装类
 */
public class Result {
    private Integer code ;//1 成功 , 0 失败
    private String msg; //提示信息
    private Object data; //数据 date

    public Result() {
    }
    public Result(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
	***//响应成功的时候可以将可以用类名Result来调用success方法将数据传入,
	//然后返回result对象***
    public static Result success(Object data){
        return new Result(1, "success", data);
    }
    public static Result success(){
        return new Result(1, "success", null);
    }
    public static Result error(String msg){
        return new Result(0, msg, null);
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}

返回请求的代码:

此处仅以list形式来返回,也可以用其他的数据,将数据放入success方法中即可

@RequestMapping("/listParam")
    public Result listParam()
    {
        ArrayList <address> list=new ArrayList<>();
        list.add(new address("广东","广州"));
        list.add(new address("湖南","长沙"));
        return Result.success(list);
    }

响应回来的是json数据
返回的是json格式

前端页面文件放在resource的static下面

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值