代码编织梦想

开发工具:

        IDEA 2022.1.4

目录

1. 概述

2. 定义返回格式实体类Result,实现Serializable接口

3. 测试: 登录操作

4. 结语


1. 概述

        在工作中,经常对接三方的web服务,服务返回统一的json数据格式,也就是说,服务有自身的一套json返回标准。感觉挺好。在网上查找资料,在自己的web服务中,想实现下。

        一般的json返回,首先想到code、message、timestamp、data、result等信息。针对code,在web服务定义,针对成功、失败、异常等,返回不同值,message给出对应的描述信息。timestamp返回时间戳,data、result返回数据集等信息。在此基础上,可能会有其他的扩展数据。

        按此思路,进行实现。

2. 定义返回格式实体类Result<T>,实现Serializable接口

        success方法用于更新操作;

        ok方法用于更新操作和返回数据集;

        error方法用于返回错误和异常。

@Data
public class Result<T> implements Serializable {
    private static final long serialVersionUID= 1L;

    private int code=0;
    private String message= "操作成功!";
    private boolean success= true;
    private long timestamp= System.currentTimeMillis();
    private T result;


    public Result(){

    }

    /*
    * 返回成功 success message code
    * */
    public Result<T> success(String message){
        this.message= message;
        this.code= 200;
        this.success= true;
        return this;
    }

    /*
     * 返回成功 success message code = result
     * */
    public static Result<Object> ok(String message){
        Result<Object> result1= new Result<Object>();
        result1.setSuccess(true);
        result1.setCode(200);
        result1.setMessage(message);
        return result1;
    }

    /*
     * 带数据集 返回成功 success code result= result
     * */
    public static Result<Object> ok(Object data){
        Result<Object> result1= new Result<Object>();
        result1.setSuccess(true);
        result1.setCode(200);
        result1.setResult(data);
        return result1;
    }

    /*
     * 返回成功 success message code= result
     * */
    public Result<T> error500(String message){
        this.message= message;
        this.code= 500;
        this.success= false;
        return this;
    }

    public static Result<Object> error(int code, String message){
        Result<Object> result1= new Result<Object>();
        result1.setCode(code);
        result1.setMessage(message);
        result1.setSuccess(false);
        return result1;
    }
    //异常返回500    
    public static Result<Object> error(String message){
        return error(500, message);
    }

}

3. 测试: 登录操作

        登录操作获取token演示获取json返回格式

@PostMapping("/user/login")
    public Result<?> login(@RequestBody User user){
        SqlSession sqlSession= null;
        Map<String, Object> map= new HashMap<>();
        try{
            sqlSession= MybatisUtils.getSqlSession();
            UserMapper mapper= sqlSession.getMapper(UserMapper.class);
            user= mapper.login(user);
            if (user!= null){
                //生成token
                Map<String, String> tokenmap= new HashMap<>();
                tokenmap.put("username", user.getUsername());
                tokenmap.put("password", user.getPassword());
                String token= JwtUtils.getToken(tokenmap);
                //返回数据
                map.put("user", user);
                map.put("token", token);
                return Result.ok(map);
            } else {
                return Result.error(201, "用户不存在!");
            }
        } catch (Exception e){
            e.printStackTrace();
            return Result.error(500,"异常!"+ e.getMessage());
        } finally {
            if (sqlSession!= null){
                sqlSession.close();
            }
        }
    }

        返回数据如下:

{
    "code": 200,
    "message": "操作成功!",
    "success": true,
    "timestamp": 1679062301192,
    "result": {
        "user": {
            "id": 1,
            "loginname": "ceaning",
            "username": "国士无双",
            "password": "123qwe,.",
            "groupid": "G001",
            "memo": "ceaning",
            "enable": 1
        },
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6IjEyM3F3ZSwuIiwibG9naW5uYW1lIjoiY2VhbmluZyIsImV4cCI6MTY3OTA2OTUwMX0.KX8Ttlj46CGikAk_vYZk06nVHMBVBcNsc5eaO0e1sEQ"
    }
}

4. 结语

        感谢网上大佬分享经验,让人受益匪浅。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ceaningking/article/details/129628915

springboot 规范化封装统一返回数据格式和异常处理_llziseweiqiu的博客-爱代码爱编程_springboot统一返回

原文章:https://blog.csdn.net/ZHWang102107/article/details/82931584 本文章是转载收藏 1、统一响应数据格式的json 统一json格式的response,如添加一条数据失败的时候的响应码是1而不是500, {     "code": 1,     "msg": "年龄需要大于6岁",  

springboot统一接口返回数据-爱代码爱编程

一,没有异常的情况,正常返回数据 希望接口统一返回的数据格式如下: { "status": 0, "msg": "成功", "data": null } 和接口数据对应的bean /** * 统一返回结果的实体 * @param <T> */ public class Result<T> im

Springboot接口返回值的统一格式-爱代码爱编程

springboot 默认情况下的返回数据类型包括以下几种: String型 :返回字符串 @GetMapping(value="/getstr/{id}") public String getstr(@PathVariable("id") Integer id){ ... return "index"; } Object型:

SpringBoot统一接口返回信息格式-爱代码爱编程

平常有时候写代码的时候发现很多不规范,包括公司代码也是, 就直接返回了!虽可用但给人感觉。。。。你懂得!还是得规范 关于SpringBoot统一接口返回信息格式: 1.定义一个返回信息的实体类: public class Msg { /*错误码*/ private Integer code; /*提示信息 */ private String msg;

SpringBoot 封装接口返回数据的统一结构-爱代码爱编程

文章目录 1. 封装代码2. 使用示例3. 结果示例4. 代码优化4.1. 返回值包装4.2. 自定义枚举4.3. 接口修改示例 1. 封装代码 代码使用了Lombok注解。 首先提供一个枚举,用于封装返回的提示码和提示信息。 package com.example.demo.common.result; import lombok.A

springboot控制接口返回的字段_SpringBoot 统一返回数据结构与异常处理-爱代码爱编程

在前后端交互时,我们一般会统一接口的数据结构。 public class Result { private Integer code; private String message; private T data; } code即定义接口的返回码,例如200对应请求成功 message即接口的返回信息,比如如果请求异常,message内就

SpringBoot返回统一的JSON标准格式-爱代码爱编程

自定义状态码枚举类封装返回结果全局异常捕获处理,使用@RestControllerAdvice注解拦截Controller方法的返回值,统一处理返回值/响应体创建Controller,准备测试请求接口,查看响应结果近年来,随着移动互联网的发展,各种类型的客户端层出不穷。如果不统一数据接口,则会造成冗余编码,增加成本。RESTful风格的API正适合通过一套

SpringBoot 返回 Json 数据格式-爱代码爱编程

一、@RestController 注解二、Jackson1、对象、List、Map 转换为Json格式2、Jackson 的配置类三、Fastjson1、Fastjson 配置类四、封装返回的数据格式 一、@RestController 注解 在 Spring Boot 中的 Controller 中使用 @RestController

springboot项目统一后端数据返回格式-爱代码爱编程

spring boot自带的ResponseEntity ResponseEntity是springboot自带的返回格式封装类,使用起来也简单,和我们平时自己封装的差不多,大概的使用如下:自己封装类 和spring boot自带的类似,返回的无非就是data,code,message,其中data是个泛型,可以存放各种数据类型。封装类如下:Data

SpringBoot接口返回数据日期格式为时间戳问题-爱代码爱编程

什么都不配置接口返回: 而数据库里面正常: 在yaml配置文件中配置: spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 这个是通用的,比如使用map转JSON返回: @GetMapping(value = {"/queryDeman

一文教你处理springboot统一返回格式_肥肥技术宅的博客-爱代码爱编程

背景 相信大部分后端开发人员在日常开发中都需要和前端对接,当然前后端都是你自己一个人搞的话可以想怎么玩就怎么玩,但是我们还是要做到一定的规范性。在前后端分离的项目中后端返回的格式一定要友好,并且固定,不能经常变来变去,不然会对前端的开发人员带来很多的工作量。 SpringBoot Controller 常见的返回格式 String @PostMap

springboot统一返回错误格式_。。。。。。372的博客-爱代码爱编程

@Slf4j @ControllerAdvice @ResponseBody public class GlobalExceptionHandler { private final static String MethodArgumentNotValidExceptionCode = "10001";//vo字段验证异常 //自定义的报错

springboot统一处理返回格式_one_smail的博客-爱代码爱编程

        在对接第三方接口的时候,第三方接口返回格式形式为{"result":null,"status":1010},虽然返回了状态码,但是状态码对应的描述信息并没有携带,前端在使用的时候需要根据状态码返回一个友好的提示,如此一来,最好的解决办法就是在返回值内将返回码对应的提示信息一并返回给前端。         这样就需要后端在接口返回格式上做统

[springboot] springboot统一返回格式_沫洺的博客-爱代码爱编程

 ✨✨个人主页:沫洺的主页  📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏                             📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏 💖💖如果文章对你有所帮助请留下三连✨✨ 🍰统一返回格式

springboot整合之统一结果返回-爱代码爱编程

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能操作会略有不同,不过总的来说不影响。 springboot整合之如何选择版本及项目搭建 springboot整合之版本号统一管理  springboot整合mybatis-plus+durid数据库连接池 springboot整合swagger springboot整合mybat