前后端字典类枚举使用方案

本文探讨了在web开发中前后端如何统一使用字典类枚举,后端通过定义枚举常量并提供接口,前端利用这些接口进行数据转换和展示。后端采用接口和注解来方便枚举的扩展和分类,确保系统维护性和可扩展性。
摘要由CSDN通过智能技术生成

在web开发中,常常涉及到一些字典类的信息编号存储和展示。由于规则比较单一,常常会抽象和封装为一个公共的方法和组件。为了保证前后端的定义统一,且考虑到易于维护和扩展。一般都采用后端定义和维护枚举常量,暴露接口给前端,前端可以进行一定封装。后端也会采用一些方式保证容易使用和增改字典类数据。

字段类枚举的使用

字典类枚举

字典类的枚举,通常是编码和名称,比如性别:

0 -> 女
1 -> 男

或者:

F -> 女
M -> 男

在前端展示的时候会转为名称,而存储到数据库通常存储为编码;

前端使用

前端会在展示和操作中使用常量数组和对象来维护。

// dict list json
{
   
  "level":[
    {
   "code": "high", "name": "高"},
    {
   "code": "middle", "name": "中"},
    {
   "code": "low", "name": "低"}
  ],
  "sex": [
    {
   "code": "0", "name": "女"},
    {
   "code": "1", "name": "男"}
  ]
  //...
}

在展示时,会从code转化为name,在一些编辑操作时,需要转化为下拉列表select来进行选择。

<select name="level">
	<option value="high"></option>
  <option value="middle"></option>
  <option value="low"></option>
</select>

在使用vue2.x的时候,通定义全局变量和初始接口来加载系统的所有字典类枚举。

后端使用

后端开发目前一般习惯使用枚举类enum来维护和使用

@AllArgsConstructor
@Getter
public enum LevelEnum {
   

    HIGH("high", "高"),
    MIDDLE("middle", "中"),
    LOW("low", "低");

    private String code;
    private String name;
}

前端使用后端提供的接口来统一使用

通常前后端会约定接口返回这些字典类枚举:

返回指定类型的枚举
GET /getDict?type=level

返回所有枚举
GET /getAllDict

格式同前述的dict list json

这样可以保证前后端对枚举是统一的,便于维护和管理。

后端接口通常是这么定义的:

@RestController
public class DictController {
   

    @GetMapping("/getAllDict")
    public Map<String, List<CodeNameDTO>> getAllDict() {
   
        return DictUtils.getAllDict();
    }

    @GetMapping("/getDict")
    public List<CodeNameDTO> getAllDict(@RequestParam String type) {
   
        return DictUtils.getAllDict().get(type);
    }
}

实体类CodeNameDTO的定义:

@Getter
@Setter
public clas
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值