请求响应-响应-@ResponseBody&统一响应结果

文章介绍了在SpringBoot框架中使用@RequestBody和@ResponseBody注解处理HTTP请求和响应。提倡使用Result类统一响应结果,包括code状态码、message提示和data数据,以提高代码管理和维护性。示例展示了Result类的定义和Controller中如何使用Result封装响应数据。
摘要由CSDN通过智能技术生成

@ResponseBody

  • 类型:方法注解,类注解
  • 位置:Controller方法上/类上
  • 作用:将方法返回值直接响应,如果返回类型是 实体对象/集合,将会转化为JSON格式数据后再响应
  • 说明:@RestController = @Controller + @ResponseBody

由于前端在访问不用的业务接口时,接口返回至前端的数据格式各种各样,对于整个项目来不便于管理而且很难维护。因此在项目开发过程中,我们应该设置一个统一的响应结果

统一响应结果

在Spring Boot框架中,Result类通常用于封装控制器(Controller)的响应结果。它是一种常见的设计模式,用于统一格式化返回给客户端的数据

  • Result类一般包含以下属性
    • code:表示请求处理的状态码,通常为整数值。例如,0表示成功,其它非零值表示不同类型的错误
    • message:对处理结果的简单描述或提示信息,可以根据需求提供更多更多上下文信息
    • data:实际的响应数据对象,可以是单个对象或集合,用于向客户端返回具体的业务数据。

使用Result类的好处是可以在所有控制器方法中保持一致的响应格式。例如,在请求处理成功时,可以将数据封装到Result对象的data属性中,并设置code为0,message为空或可选的成功消息。而在处理失败时,可以设置相应的错误状态码和错误消息。

以下为一个Result类的示例(具体代码如下)

package com.example.POJO;

/**
 * 统一响应结果封装类
 */
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;
    }

    // 设置get/set方法
    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);
    }

    // 重写toString()方法,设置返回数据格式
    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}

Controller类具体代码为:

package com.example.Controller;

import com.example.POJO.Address;
import com.example.POJO.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * 测试响应数据
 */
@RestController
public class ResponseController {
    @RequestMapping("/hello")
    public Result hello() {
        System.out.println("Hello World ~");
        //return new Result(1,"success","Hello World ~");
        // 直接调用success()方法
        return Result.success("Hello World ~");
    }

    @RequestMapping("/getAddr")
    public Result getAddr() {
        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");
        return Result.success(addr);
    }

    @RequestMapping("/listAddr")
    public Result listAddr() {
        List<Address> list = new ArrayList<>();

        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");

        Address addr2 = new Address();
        addr2.setProvince("陕西");
        addr2.setCity("西安");

        list.add(addr);
        list.add(addr2);
        return Result.success(list);
    }
}

在postman中进行测试,分别查看返回结果:

1.

2.

3.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值