后端的自我修养
奔奔尚
spawpaw@hotmail.com
展开
-
优雅地实现java枚举与int值地转换(Spring表单提交、Jackson、Mybatis、dubbo)
阿里巴巴的开发规范里有这么一条:5.【强制】二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值里不允许使用枚举类型或者包含枚举类型的POJO对象。网上很多人将此粗暴的理解为不让用枚举,这是错误的。这个规范只是不让在接口返回值中使用枚举,因为会存在潜在的序列化问题。但是在其他地方是可以使用枚举的,毕竟大家都用int的话,维护起来简直就是地狱。0、目标假如我有一个POJO类,里...原创 2019-11-29 16:42:35 · 995 阅读 · 1 评论 -
异常处理以及服务器应如何返回异常状态
服务器应如何返回异常状态大多数人写后端的api时,都喜欢这样定义响应:HTTP 200 OK...headers{ code: 500, msg: "error" data: T}我查了查网上的资料,一种说法是一些地区的网络运营商会劫持4xx和5xx请求,所以一律把http这样看起来没什么问题,实际上用起来也没什么问题,但是仔细追究起来就显得非常不优雅,一种说法是运...原创 2019-09-15 02:15:26 · 4620 阅读 · 0 评论 -
如何定义响应体
一、引子我们在设计接口时无外乎以下两种:写:如创建、修改、删除,这里可能会包含复杂的校验逻辑,执行的结果可能是出错、部分出错、有部分警告。读:后端只是纯粹地根据用户提供的条件检索指定的数据,操作是幂等的,要么能查出来,要么查不出来,不会对已存在的数据造成影响。那么根据这样的分类,我们就可以设计出更具针对性的响应体。二、读操作对于读操作,因为每个读操作都是针对不同的资源,所以直接返回...原创 2019-09-15 14:25:21 · 1317 阅读 · 0 评论 -
枚举类型的处理(Spring表单提交、Jackson、Mybatis、dubbo)
一、痛点我们的项目开发中一定会遇到枚举,那么如何将枚举值存储在数据库,如何把枚举值返回给前端就成了一个必须考虑的问题。假如我们的User实体定义如下,其中的status是个枚举,代表用户的状态:@Dataclass User{ private Long id; private UserStatus status;//用户状态}@Getter@AllArgsConst...原创 2019-09-20 21:35:55 · 1084 阅读 · 0 评论 -
模块化开发
看到网上许多人关于项目划分模块的文章,有按照层次划分的,有按照业务逻辑划分完又按照层次再划分一遍的,比如这样:根项目: commons: #所有模块公用的类,如验证工具、RPC接口、dto等 业务线1: 业务1-dao: #dao层 业务1-service: #service层的实现,混杂了业务逻辑 业务1-web: #web层...原创 2019-09-20 22:22:52 · 829 阅读 · 0 评论