Web请求与响应

目录

Postman

Postman简介 

Postman的使用 

请求

简单参数 

 实体参数

 数组参数

 集合参数

 日期参数

Json参数

路径参数 

 响应

@ResponseBody 

统一响应结果


Postman

Postman简介 

postman是一款功能强大的网页调试与发送网页http请求的Chrome插件,常用于进行接口测试。

Postman的使用 

先创建用户 

Web请求与响应_第1张图片

 之后通过刚刚创建的用户登录

创建工作空间

Web请求与响应_第2张图片

 Web请求与响应_第3张图片

Web请求与响应_第4张图片

 创建完成后他会自动进入到springbootweb工作空间

点击+添加新请求

Web请求与响应_第5张图片

请求

 pom.xml文件如下



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.7.4
         
    
    com.he1220
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


简单参数 

以原始的方式接收请求参数 

 目录结构如下

Web请求与响应_第6张图片

RequestController.java文件内容如下

package com.he1220.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request){
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println(name);
        System.out.println(age);
        return "ok";
    }
}

测试结果如下

Web请求与响应_第7张图片

Web请求与响应_第8张图片

 以SpringBoot的方式接收请求参数

package com.he1220.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(String name,Integer age){
        System.out.println(name);
        System.out.println(age);
        return "ok";
    }
}

如果方法形参名称与请求参数名称不匹配,可以通过@RequestParam注解完成映射

通过name属性指定请求参数名

@RequestParam中的Required属性默认为true,该请求参数必须传递,不传递将报错(400)。可以设置为false

package com.he1220.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam(name="name")String username,Integer age){
        System.out.println(username);
        System.out.println(age);
        return "ok";
    }
}

Web请求与响应_第9张图片

 实体参数

需要保证请求参数名与形参对象属性名一致

 目录结构如下

Web请求与响应_第10张图片

RequestController.java内容如下 

package com.he1220.demo.controller;

import com.he1220.demo.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
    @RequestMapping("/Pojo")
    public String Pojo(User user){
        System.out.println(user);
        return "ok~";
    }
}

User.java内容如下

package com.he1220.demo.pojo;

public class User{
    private String name;
    private String age;
    private Add add;
    public User(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public Add getAdd() {
        return add;
    }

    public String getName() {
        return name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAdd(Add add) {
        this.add = add;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", add=" + add +
                '}';
    }
}

 Add.java内容如下

package com.he1220.demo.pojo;

public class Add {
    private String province;
    private String city;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "Add{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}

测试结果如下

Web请求与响应_第11张图片

Web请求与响应_第12张图片

 数组参数

 RequestController.java内容如下 

package com.he1220.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;

@RestController
public class RequestController {
    @RequestMapping("/arrParam")
    public String arrParam(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "ok~";
    }
}

测试结果如下

Web请求与响应_第13张图片

 Web请求与响应_第14张图片

 集合参数

需要保证请求的参数名与集合变量名相同,通过@RequestParam注解绑定参数关系

 RequestController.java内容如下  

package com.he1220.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class RequestController {
    @RequestMapping("/listParam")
    public String listParam(@RequestParam List hobby){
        System.out.println(hobby);
        return "ok~";
    }
}

Web请求与响应_第15张图片

 日期参数

使用@DateTimeFormat 注解完成日期参数格式转换 

package com.he1220.demo.controller;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

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

Web请求与响应_第16张图片

Json参数

通过@RequestBody注解将Json对象封装到实体类当中 

package com.he1220.demo.controller;

import com.he1220.demo.pojo.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class RequestController {
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "ok~";
    }
}

Web请求与响应_第17张图片

路径参数 

 通过请求URL直接传递参数,使用{...}来标识该参数路径,需要使用@PathVariable获取参数路径

@RestController
public class RequestController {
    @RequestMapping("/path/{id}/{name}")
    public String pathParam(@PathVariable Integer id,@PathVariable String name){
        System.out.println(id + name);
        return "ok~";
    }
}

Web请求与响应_第18张图片

 响应

@ResponseBody 

放在Controller方法上/类上

将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应

@RestController = @Controller + @ResponseBody

统一响应结果

目录结构如下

Web请求与响应_第19张图片

 pojo.Result.java文件内容如下 

package com.he1220.demo.pojo;

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

    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;
    }

    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 +
                '}';
    }
}

 RequestController.class内容如下  

package com.he1220.demo.controller;

import com.he1220.demo.pojo.Add;
import com.he1220.demo.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
    @RequestMapping("/getAddr")
    public Result getAddr(String province, String city){
        System.out.println(province);
        System.out.println(city);
        Add addr = new Add();
        addr.setProvince(province);
        addr.setCity(city);
        return Result.success(addr);
    }
}

测试结果如下

Web请求与响应_第20张图片​​​​​​​

你可能感兴趣的:(SpringBoot,postman,测试工具)