• 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")
    @Slf4j
    public 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);
        }
    }
    
    
  • 相关阅读:
    __doPostback在客户端控件中的作用
    BlogEngine学习二:基于ICallbackEventHandler的轻量级Ajax方式
    JS操作XML数据备忘
    JS解析DataSet.GetXML()方法产生的xml
    JS中的prototype的使用方式
    实体类的二进制序列化
    PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
    PDF.NET的SQL日志
    PostgreSQL的PDF.NET驱动程序构建过程
    使用XSD编写具有智能提示的XML文件(以SQLMAP脚本为实例)
  • 原文地址:https://www.cnblogs.com/Naylor/p/13330127.html
Copyright © 2020-2023  润新知