java SpringBoot(十九)SpringBoot API 状态码类以及返回信息工具类

在平时SpringBoot编写网络API接口代码的时候,难免需要用到返回状态码以及返回的数据、信息。

今天写一个万能的返回状态信息工具类。

 

 

目录结构: 

IErrorCode 接口类:

package com.zr.mall.demo.common.api;

/**
 * 封装API的错误码
 */
public interface IErrorCode {

    long getCode();

    String getMessage();
}

ResultCode 枚举类:

存放状态码以及对应的返回信息

package com.zr.mall.demo.common.api;

public enum ResultCode implements IErrorCode{
    SUCCESS(200, "操作成功"),
    FAILED(500, "操作失败"),
    VALIDATE_FAILED(404, "参数检验失败"),
    UNAUTHORIZED(401, "暂未登录或token已过期"),
    FORBIDDEN(403, "没有相关权限");


    /** 定义状态码 */
    private long code;

    /** 定义返回信息 */
    private String message;

    ResultCode() {
    }

    ResultCode(long code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public long getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}

返回对象泛型类,用于返回

package com.zr.mall.demo.common.api;

/**
 * 通用返回对象
 * @param <T>
 */
public class CommonResult<T> {

    private long code;
    private String message;
    private T data;

    public CommonResult() {
    }

    public CommonResult(long code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public long getCode() {
        return code;
    }

    public void setCode(long code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    /**
     * 成功返回结果
     *
     * @param data 获取的数据
     */
    public static <T> CommonResult<T> success(T data){
        return new CommonResult<T>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data);
    }

    /**
     * 成功返回结果
     *
     * @param data 获取的数据
     * @param  message 提示信息
     */
    public static <T> CommonResult<T> success(T data, String message) {
        return new CommonResult<T>(ResultCode.SUCCESS.getCode(), message, data);
    }

    /**
     * 失败返回结果
     * @param errorCode 错误码
     */
    public static <T> CommonResult<T> failed(IErrorCode errorCode) {
        return new CommonResult<T>(errorCode.getCode(), errorCode.getMessage(), null);
    }

    /**
     * 失败返回结果
     * @param message 提示信息
     */
    public static <T> CommonResult<T> failed(String message) {
        return new CommonResult<T>(ResultCode.FAILED.getCode(), message, null);
    }

    /**
     * 失败返回结果
     */
    public static <T> CommonResult<T> failed() {
        return failed(ResultCode.FAILED);
    }

    /**
     * 参数验证失败返回结果
     */
    public static <T> CommonResult<T> validateFailed() {
        return failed(ResultCode.VALIDATE_FAILED);
    }

    /**
     * 参数验证失败返回结果
     * @param message 提示信息
     */
    public static <T> CommonResult<T> validateFailed(String message) {
        return new CommonResult<T>(ResultCode.VALIDATE_FAILED.getCode(), message, null);
    }

    /**
     * 未登录返回结果
     */
    public static <T> CommonResult<T> unauthorized(T data) {
        return new CommonResult<T>(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMessage(), data);
    }

    /**
     * 未授权返回结果
     */
    public static <T> CommonResult<T> forbidden(T data) {
        return new CommonResult<T>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), data);
    }

}

在Controller中进行测试:

package com.zr.mall.demo.controller;

import com.zr.mall.demo.common.api.CommonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Api(tags = "MallController", description = "商品api")
@Controller
@RequestMapping("/mall")
public class MallController {

    @ApiOperation("测试返回成功")
    @RequestMapping(value = "/testSuccess", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult  returnSuccess(){
        return CommonResult.success("test");
    }

}

查看结果:

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot是一个开源的Java框架,它可以帮助开发人员快速搭建基于Spring的应用程序。而海康门禁是一种基于海康威视公司的门禁设备,它可以通过固定的身份验证来控制人员进出特定区域。 将Spring Boot和海康门禁结合起来使用,可以实现更高效的门禁管理系统。首先,可以利用Spring Boot的优势快速开发门禁管理系统的后台。借助Spring Boot的依赖管理和自动配置功能,可以简化开发过程,提高开发效率。同时,Spring Boot对面向对象编程的支持也能让开发人员更加方便地使用Java语言编写代码。 其次,结合Spring Boot和海康门禁设备的API,可以实现与门禁设备的实时通信。通过接入海康门禁设备的API,可以获取门禁设备的实时状态、员工进出记录等信息。这样,可以实现员工的身份验证、记录员工的进出信息、以及提供实时的门禁状态查询等功能。 最后,在门禁管理系统的前端部分,可以利用Spring Boot的模板引擎(如Freemarker、Thymeleaf等)和前端框架(如Bootstrap、Vue.js等)进行开发。这样,可以实现门禁管理系统的用户界面设计和交互效果。 综上所述,结合Spring Boot和海康门禁,可以快速开发高效的门禁管理系统,实现员工身份验证、记录员工进出信息以及提供实时门禁状态查询等功能。同时,Spring Boot提供的便利性和海康门禁设备的可靠性,都能够为门禁管理系统的开发和使用带来便利和效益。 ### 回答2: Spring Boot 是一款基于Spring框架的开源Java开发框架,它简化了Spring应用程序的配置和部署,使开发者能够更快、更方便地开发出高效的应用程序。而海康门禁是一种现代化的门禁系统,通过使用智能卡、密码、人脸识别等多种身份验证手段,实现对门禁通行的精确控制和管理。下面我们探讨一下如何将Spring Boot与海康门禁系统结合起来。 首先,在Spring Boot应用程序中,我们可以使用Spring Security模块来实现身份验证和访问控制。可以通过自定义的UserDetailsService和PasswordEncoder实现用户信息的查询和密码加密,将门禁系统中的用户信息集成到Spring Security中。此外,我们还可以通过自定义的AccessDecisionVoter来实现对用户访问门禁系统功能的权限控制。 其次,我们可以通过Spring Boot的Web开发支持,实现与海康门禁系统的对接。可以使用Spring MVC来处理门禁系统的请求,并且通过RestTemplate或Feign等工具来调用门禁系统的接口。这样,我们就可以在Spring Boot应用程序中实现对门禁通行数据的读取、授权等操作。 最后,在Spring Boot应用程序中,我们可以使用Spring Data JPA或者MyBatis等持久化框架,将门禁系统中的数据存储到数据库中。可以通过定义实体类和Repository接口,实现对门禁数据的CRUD操作。这样,我们就可以在Spring Boot应用程序中实现对门禁数据的查询、统计等功能。 综上所述,通过结合Spring Boot和海康门禁系统,我们可以快速开发出高效的门禁系统应用程序,并实现对门禁数据的管理和控制,提升门禁系统的安全性和用户体验。 ### 回答3: Spring Boot是一个开源的Java框架,用于创建独立的、生产就绪的Spring应用程序。它通过提供默认配置和工具,简化了Spring应用程序的开发和部署过程。 海康门禁是指海康威视(Hangzhou Hikvision Digital Technology Co., Ltd.)公司提供的门禁产品。海康威视是全球领先的视频监控产品和解决方案供应商之一,门禁控制是他们业务范围之一。 结合两者,使用Spring Boot开发海康门禁系统可以带来以下优势: 1.简化开发:Spring Boot的特性和自动配置可以帮助开发人员快速搭建和配置门禁系统。它提供了一些现成的模块,如Web开发、数据库访问等,使得开发过程更加高效。 2.高度可扩展:Spring Boot的松耦合设计使得系统的各个模块可以独立开发和部署。这就意味着可以根据需求逐步引入更多功能和模块,而不会对系统的整体架构造成过多影响。 3.安全性和稳定性:海康威视作为全球视频监控产品供应商,其门禁控制系统具有较高的安全性和稳定性。结合Spring Boot开发,可以保证系统在使用过程中的可靠性和安全性。 4.云部署支持:Spring Boot可以轻松实现云部署,可以方便地将门禁系统运行在各种云平台,如云服务器、容器等。这样可以降低系统的部署成本和复杂度。 5.社区支持:Spring Boot拥有一个庞大的开发者社区,有很多活跃的开发者和经验丰富的用户,可以提供及时的技术支持和解决问题的方案。 总的来说,使用Spring Boot开发海康门禁系统可以提高开发效率,保证系统的稳定性和安全性,同时还可以充分利用Spring Boot的云部署支持和丰富的社区资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值