请求体
@Data
@JsonNaming(value = PropertyNamingStrategies.UpperCamelCaseStrategy.class)
public abstract class ApiReq implements LRequest {private String requestID;
}
响应体
@Data
@JsonNaming(value = PropertyNamingStrategies.UpperCamelCaseStrategy.class)
public abstract class LBaseResp implements LResponse {@Schema(description = "请求ID")private String requestID;@Schema(description = "错误信息")@JsonInclude(JsonInclude.Include.NON_EMPTY)private Error error;}
这样做的好处:
这样的设计有以下几个好处:
-
代码复用与扩展性:通过将
ApiReq
设计为抽象类,你可以定义所有API请求通用的属性和方法。任何具体的API请求类只需继承ApiReq
类,就可以自动获得这些通用功能,同时还可以添加自己的特定功能。这种设计使得代码更加复用和模块化,也更容易扩展。 -
标准化的JSON命名:使用
@JsonNaming
注解确保了所有继承自ApiReq
的类的JSON输出都将遵循大驼峰命名法。这有助于保持API的一致性和可预测性,使得前端或其他客户端更容易解析和理解返回的JSON数据。 -
简化代码:通过使用Lombok的
@Data
注解,你无需手动编写getter、setter、equals()
、hashCode()
和toString()
等方法,这大大减少了代码量,并降低了出错的可能性。同时,这也让代码更加整洁和易于阅读。 -
接口实现:
ApiReq
类实现了LRequest
接口,这意味着它承诺提供该接口定义的所有方法。这有助于确保所有API请求类都遵循相同的接口规范,从而使得代码更加一致和可维护。 -
灵活性:尽管
requestID
是一个私有属性,但由于它是抽象类的一部分,子类可以根据需要选择是否覆盖其getter和setter方法,或者添加额外的逻辑。这种设计提供了足够的灵活性,以适应不同的API请求需求。
综上所述,这样的设计结合了抽象类、接口、注解和Lombok库的优点,使得代码更加复用、模块化、一致和易于维护。