springboot的restful接口成功失败返回值设计

springboot的restful接口最终返回值ResponseEntity

springboot的restful接口最终的返回值都是ResponseEntity,调用者关心的是状态码和结果.ResponseEntity继承自HttpEntity,继承了body也就是结果,新加属性status也就是状态码.

ResponseEntity赋值

  • status默认200.
  • 接口返回值会被封装到body中

接口返回值设计

所有返回状态码都是200,接口返回值定义成一个统一的对象三个属性code,message,data。接口调用成功有用信息code和data(如果需要返回值);接口调用失败有用信息code和message.

  • code:业务码定义业务操作的结果
  • message:错误信息
  • data:成功的返回值
/**
 * 返回值对象
 */
public class Result {
   /**
     * 响应码
     */
    private String code;
    /**
     * 错误消息
     */
    private String message;
    /**
     * 数据
     */
    private Object data;

    public Result setCode(String code) {
        this.code = code;
        return this;
    }

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


    public Result setData(Object data) {
        this.data = data;
        return this;
    }

    private static final String UNKNOWN_ERROR_MESSAGE = "unknown error";

    /**
     * 成功无返回值
     * @return Result
     */
    public static Result ok() {
        return new Result().setCode(ResultCodeConstant.SUCCESS);
    }

    /**
     * 成功有返回值
     * @return Result
     */
    public static Result ok(Object data) {
        return new Result().setCode(ResultCodeConstant.SUCCESS).setData(data);
    }

    /**
     * 属性校验失败,错误信息message
     * @return Result
     */
    public static Result bad(String message) {
        return new Result().setCode(ResultCodeConstant.FIELD_ILLEGAL).setMessage(message);
    }

    /**
     * SQL异常,异常信息message
     * @return Result
     */
    public static Result error(String message) {
        return new Result().setCode(ResultCodeConstant.SQL_FAILURE).setMessage(message);
    }

    /**
     * 通用:自定义状态码,说明,返回值
     * @return Result
     */
    public static Result build(String code, String message, Object data) {
        return new Result().setCode(code).setMessage(message).setData(data);
    }
}
/**
 * 业务响应码
 */
public class ResultCodeConstant {
    /** 成功 */
    public static final String SUCCESS = "0000";
    /** 参数不合法 */
    public static final String FIELD_ILLEGAL = "1000";
    /** sql执行失败 */
    public static final String SQL_FAILURE = "2000";
}

import org.springframework.web.bind.annotation.*;
/**
 * 接口
 */
@RestController
@RequestMapping("/demo")
public class DemoController{

	@DeleteMapping
    @Override
    public Result deleteBatchIds(@RequestParam List<Long> ids) {
        if (ids == null && ids.size == 0) {
            logger.error("ids is required.");
            return Result.bad("ids is required.");
        }
        //TODO 处理ids
        return Result.ok();//return Result.error("message");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值