Spring Boot如何自定义Http的返回结果类
SpringBoot为我们创建Web服务后端,提供了十分便捷的工具,在写代码的过程中,就与Web端的交互而言,SpringBoot自己提供给的一个Response类,作为一个结果返回类,那我们该怎么自定义一个返回类呢?
-
首先我们需要自定一个返回类,下面是我自定义的返回类。
public class RespBean { private long code; private String message; private Object obj; public RespBean(int i,String message,Object obj){ this.code=i; this.message=message; this.obj=obj; } /** * 成功返回结果 * @param message * @return */ public static RespBean success(String message){ return new RespBean(200,message,null); } /** * 成功返回结果 * @param message * @param obj * @return */ public static RespBean success(String message,Object obj){ return new RespBean(200,message,obj); } /** * 失败返回结果 * @param message * @return */ public static RespBean error(String message){ return new RespBean(500,message,null); } /** * 失败返回结果 * @param message * @param obj * @return */ public static RespBean error(String message,Object obj){ return new RespBean(500,message,obj); } }
-
我们在Controller中写个测试接口,测试该返回。
import com.example.test.RespBean; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.*; @RestController public class PersonController { @RequestMapping(value = "/test",method = RequestMethod.GET) public RespBean My_Test(){ try{ List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); return RespBean.success("测试成功",list);//成功返回 }catch (Exception e){ return RespBean.error("测试失败!",e.toString());//错误返回 } } }
-
我们启动PostMan来测试这个接口。PostMan还是一个很好的工具,用来测试Web后端代码,他是通过模拟Web端向后端发送Http请求来实现测试的,没用过的小伙伴,我还是很推荐去用一下的。网上如何使用PostMan的教程还是很多的。
这里直接测试,可是他没法获得我们返回的自定义类。这是为什么呢?我们看一下后端和他的报错。
发现原来是不支持自定义的类的形式。
解决方法:
我们使用Lombok,它会将返回的自定义类转化为JSON对象,进行返回。具体操作如下:
首先在pom.xml中导入lombok依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
其次在自定义返回类中声明注解。
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RespBean {
private long code;
private String message;
private Object obj;
我们使用Lombok中的Data注解,当使用这个注解后,自定义的返回类会转化为JSON对象继续返回。
这里的obj是一个Object对象,可以放入常见的一些对象。
到这里就结束了,感谢阅读。