Java 统一封装响应结果--统一系统响应格式

第一步:定义枚举,管理响应码和相应消息

package com.haoqian.log_demo.utils.result;

public enum ResultCodeEnum {
    /**
     * 成功:200
     */
    SUCCESS(200, "成功"),
    /**
     * 参数错误:1001-1999
     */
    PARAM_IS_INVALID(1001, "参数无效"),
    PARAM_IS_NULL(1002, "参数为空"),
    PARAM_TYPE_BIND_ERROR(1003, "参数类型错误"),
    PARAM_NOT_COMPLETE(1004, "参数缺失"),
    /**
     * 用户错误:2001-2999
     */
    USER_NOT_LOGIN_IN(2001, "用户未登录,访问的路径需要验证,请登录"),
    USER_LOGIN_ERROR(2002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN(2003, "账号被禁用"),
    USER_NOT_EXIST(2004, "用户不存在"),
    USER_HAS_EXISTED(2005, "用户已存在");


    private final Integer code;
    private final String message;


    ResultCodeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

}

第二步:编写封装响应结果的类

package com.haoqian.log_demo.utils.result;

import lombok.Data;

import java.io.Serializable;

/**
 * 封装请求的响应结果的类
 * <p>
 * 注解版的进阶做法见下文
 * https://mp.weixin.qq.com/s/EW-vo8ERQLAVc3D8YwTr6w
 */
@Data
public class Result implements Serializable {

    private Integer code;
    private String message;
    private Object data;

    public void setResultCodeAndMessage(ResultCodeEnum resultCodeEnum) {
        this.code = resultCodeEnum.getCode();
        this.message = resultCodeEnum.getMessage();
    }

    // =============================================== 构造的方式 ===============================================

    /**
     * 返回不带数据的成功
     *
     * @return
     */
    public static Result success() {
        Result result = new Result();
        result.setResultCodeAndMessage(ResultCodeEnum.SUCCESS);
        return result;
    }

    /**
     * 返回带数据的成功
     *
     * @return
     */
    public static Result success(Object data) {
        Result result = new Result();
        result.setResultCodeAndMessage(ResultCodeEnum.SUCCESS);
        result.setData(data);
        return result;
    }

    /**
     * 返回不带数据的失败
     *
     * @return
     */
    public static Result failure(ResultCodeEnum resultCodeEnum) {
        Result result = new Result();
        result.setResultCodeAndMessage(resultCodeEnum);
        return result;
    }

    /**
     * 返回带数据的失败
     *
     * @return
     */
    public static Result failure(ResultCodeEnum resultCodeEnum, Object data) {
        Result result = new Result();
        result.setResultCodeAndMessage(resultCodeEnum);
        result.setData(data);
        return result;
    }

    // =============================================== 追加的方式 ===============================================

    /**
     * 添加响应编号
     *
     * @return
     */
    public static Result code(Integer code) {
        Result result = new Result();
        result.setCode(code);
        return result;
    }

    /**
     * 追加响应消息
     *
     * @return
     */
    public Result message(String message) {
        this.message = message;
        return this;
    }

    /**
     * 追加响应数据
     *
     * @return
     */
    public Result data(Object data) {
        this.data = data;
        return this;
    }

}

第三步:Controller接口中调用

package com.example.demo.controller;

import com.example.demo.responseResult.Result;
import com.example.demo.responseResult.ResultCode;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("/success1")
    public Result success1() {
        return Result.success();
    }

    @GetMapping("/success2")
    public Result success2() {
        return Result.success("成功返回的数据");
    }

    @GetMapping("/success3")
    public Result success3() {
        return Result.success().data("success3");
    }

    @GetMapping("/success4")
    public Result success4() {
        return Result.code(200).message("成功").data("success4"); // 不建议
    }

    @GetMapping("/failure1")
    public Result failure1() {
        return Result.failure(ResultCode.USER_ACCOUNT_FORBIDDEN);
    }

    @GetMapping("/failure2")
    public Result failure2() {
        return Result.failure(ResultCode.USER_ACCOUNT_FORBIDDEN, "错误返回的数据");
    }

    @GetMapping("/failure3")
    public Result failure3() {
        return Result.failure(ResultCode.USER_ACCOUNT_FORBIDDEN).data("failure3");
    }

    @GetMapping("/failure4")
    public Result failure4() {
        return Result.code(2003).message("账号被禁用").data("failure4"); // 不建议
    }

}

响应效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java中使用HttpPost上传图片的封装方法: ```java import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.ByteArrayBody; import org.apache.http.entity.mime.content.ContentBody; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.io.IOException; public class HttpUtil { public static String uploadImage(String url, byte[] imageBytes) throws IOException { // 创建HttpClient对象 HttpClient httpClient = HttpClientBuilder.create().build(); // 创建HttpPost对象 HttpPost httpPost = new HttpPost(url); // 创建图片ContentBody对象 ContentBody imageBody = new ByteArrayBody(imageBytes, ContentType.create("image/jpeg"), "image.jpg"); // 创建MultipartEntityBuilder对象,用于封装请求参数 MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addPart("image", imageBody); // 添加图片ContentBody对象 // 将参数封装到HttpEntity中 HttpEntity httpEntity = builder.build(); // 设置请求参数 httpPost.setEntity(httpEntity); // 发送请求并获取响应 HttpResponse response = httpClient.execute(httpPost); // 获取响应实体 HttpEntity entity = response.getEntity(); // 将响应实体转换为字符串 String result = EntityUtils.toString(entity, "UTF-8"); return result; } } ``` 使用方法如下: ```java byte[] imageBytes = ...; // 待上传的图片字节数组 String url = ...; // 上传图片的接口地址 try { String result = HttpUtil.uploadImage(url, imageBytes); System.out.println(result); } catch (IOException e) { e.printStackTrace(); } ``` 注意:代码中使用了Apache HttpClient库,需要将其添加到项目依赖中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值