Spring Boot接口设计

导读:本篇文章讲解 Spring Boot接口设计,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

项目文件结构

Spring Boot接口设计

编写示例代码

  • 添加lombok的依赖
  • 新建DemoController,用于提供RESTful接口。增加相关注解:@RestController,@RequestMapping(“/demo”),@Slf4j
  • 新建GetUserParam,接口传入参数实体。
  • 新建DemoErrorEnum,接口返回消息和返回消息码的枚举
public enum DemoErrorEnum {

    SUCCESS("操作成功", "0000"),
    PARAM_NULL("参数为空", "1001"),
    TOKEN_EXPIRED("token已过期", "2007"),
    SERVER_ERROR("服务器异常,请稍后重试", "5001"),


    ;

    private String code;
    private String message;

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

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

    public static String getErrorMsg(String code) {
        for (DemoErrorEnum e : DemoErrorEnum.values()) {
            if (e.getCode().equals(code)) {
                return e.message;
            }
        }
        return null;
    }
}

  • 新建ResultDTO,作为接口返回基类。增加相关注解:@Data,@Accessors(chain = true)。
    • success:接口是否调用成功
    • resultMessage:调用结果描述
    • resultCode:调用结果消息码
    • result:调用返回的数据
    • 定义一个static的error方法,当接口失败的时候,可以直接返回一个error方法,方法内部构造具体的返回消息码和结果描述。入参为一个DemoErrorEnum的枚举。
    • 定义一个static的success方法,当接口成功的时候,可以直接返回一个success方法,方法内部构造具体的返回信息,入参也是一个DemoErrorEnum的枚举。编写一个重载方法,入参为空,方法内部构造默认的响应信息。
import com.naylor.interfacedesign.domain.demo.error.DemoErrorEnum;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@Accessors(chain = true)
public class ResultDTO<T>  implements Serializable {
    private boolean success;

    private String resultMessage;

    private String resultCode;

    private T result;

    public static ResultDTO error(DemoErrorEnum errorEnum) {
        return new ResultDTO().setSuccess(false).setResultMessage(errorEnum.getMessage()).setResultCode(errorEnum.getCode());
    }

    public static ResultDTO success(DemoErrorEnum errorEnum) {
        return new ResultDTO().setSuccess(true).setResultCode(errorEnum.getCode());
    }

    public static ResultDTO success() {
        return new ResultDTO().setSuccess(true).setResultCode(DemoErrorEnum.SUCCESS.getCode()).setResultMessage(DemoErrorEnum.SUCCESS.getMessage());
    }
}

  • 新建UserDTO,接口返回的具体信息
  • DemoController中新建getUser方法,入参为GetUserParam,返回值为ResultDTO。此接口内部逻辑大致是三部分
    • 检验传入的参数是否合法
    • 调用service处理具体的业务逻辑
    • 检验和组装service返回的结果,并以此为依据向接口调用者返回信息。

import com.naylor.interfacedesign.domain.demo.controller.param.GetUserParam;import com.naylor.interfacedesign.domain.demo.dto.ResultDTO;import com.naylor.interfacedesign.domain.demo.dto.UserDTO;import com.naylor.interfacedesign.domain.demo.error.DemoErrorEnum;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/demo")@Slf4jpublic class DemoController {    @GetMapping("/user")    public ResultDTO<UserDTO> getUser(GetUserParam param) {        if (null == param) {            return ResultDTO.error(DemoErrorEnum.PARAM_NULL);        }        UserDTO userDTO = null;        // do something        return null != userDTO ? ResultDTO.success().setResult(userDTO) : ResultDTO.error(DemoErrorEnum.SERVER_ERROR);    }}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14909.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!