欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

后端编写前端接口规范:

程序员文章站 2022-04-24 18:46:35
...

接口一:

前端接口需要的返回值:

| 字段  | 类型   | 描述   |
| ----- | ------ | ------ |
| eventTotal | string |  活动参与总人次 |
| userTotal | string | 用户总数量 |
| digitTotal | string |  数字资源总量 |
| clickTotal | string | 各网站年均总点击量 |
| organTotal  | string |  全国文化机构总数量 |
| microTerminal | string |  “两微一端”用户总数 |
| houseTotal | string | 馆舍总面积 |
| employTotal | string |  从业人员总数量 |
| closeDate | number|  数据截至时间 |
| closeYear | number|  微端截至年份 |
| closeMonth| number|  微端截至月份 |

返回示例:
```json
{
  eventTotal: "9.70亿",
  userTotal:"15,698,643",
  digitTotal:"2.21万",
  clickTotal:"14.12亿",
  organTotal:"4.76万",
  microTerminal: '107.21万‘,
  houseTotal:"5851.27万",
  employTotal:"24.32万",
  closeDate: 2018,
  closeYear: 2019,
  closeMonth: 9
}
```

数据库建立的字段和属性:有几个字段遗漏未建立,只是演示:

后端编写前端接口规范:

后端编写前端接口规范:

利用mybatisPlus生成器生成,前面博客有讲解:

返回数据编写:

@Controller
@RequestMapping("/testDemo")
public class TestDemoController {

    @Resource
    ITestDemoService iTestDemoService;

    /**
     * 访问地址:localhost:8081/testDemo/getAll
     * @return
     */
    @RequestMapping("/getAll")
    @ResponseBody
    public TestDemo bddPoolBrpdcpListAll(){
        List<TestDemo> testDemos = iTestDemoService.selectByMap(null);
        return  testDemos.get(0);
    }
	
}

//TestDemo是对应表生成的表的类,最终返回一条了数据;

测试结果一:

后端编写前端接口规范:

接口二:

参数:

返回值:

| 字段   | 类型           | 描述                  |
| ------ | -------------- | --------------------- |
| country | string,number | 国家中心 |
| province | string,number | 省级分中心 |
| city | string,number | 地级市级支中心 |
| county | string,number | 县级支中心 |
| town | string,number | 乡镇基层服务点  |
| village | string,number | 村基层服务点 |
| countryLibrary | string,number | 国家图书馆  |
| provinceLibrary | string,number | 省级图书馆  |
| cityLibrary | string,number | 地市级图书馆 |
| countyLibrary | string,number | 县级图书馆|
| sysCloseData | string,number | 截至日期 |


示例:

```json
{
      country: "1",
      province: "33",
      city: "333",
      county: "2843",
      town: "32179",
      village: "70万",
      countryLibrary: "1",
      provinceLibrary: "41",
      cityLibrary: "485",
      countyLibrary: "2740",
      sysCloseData: "2019",
  }
```

数据库建立的字段和属性:

后端编写前端接口规范:

后端编写前端接口规范:

返回数据编写:

@Controller
@RequestMapping("/serviceNetwork")
public class ServiceNetworkController {

    @Resource
    IServiceNetworkService iServiceNetworkService;

    /**
     * 访问地址:localhost:8081/serviceNetwork/getAll
     * @return
     */
    @RequestMapping("/getAll")
    @ResponseBody
    public ServiceNetwork bddPoolBrpdcpListAll(){
        List<ServiceNetwork> testDemos = iServiceNetworkService.selectByMap(null);
        return  testDemos.get(0);
    }
}
//ServiceNetwork 是数据表相关属性对应的类,

测试结果二:

后端编写前端接口规范:

接口三:

数据库中真是存在的字段如下:数据库中的字段只有resname,rescode,resnum,quanunit,和statime等

后端编写前端接口规范:

分析:数据库中 并没有我们所需要的字段属性,所以,我们需要建立自己的类属性和数据库中的属性对应起来,

自己建立了三个类:分别为:

后端编写前端接口规范:

DataSource类:通过建立另外两个类将他们联系起来,

后端编写前端接口规范:

后端编写前端接口规范:

 

参数:
返回值:

| 字段   | 类型           | 描述                  |
| ------ | -------------- | --------------------- |
| newspaper  | object | 报纸数据                |
| book  | object | 图书数据                |
| audio  | object | 音频数据                |
| periodical  | object | 期刊数据                |
| video  | object | 视频数据                |
| tool  | object | 工具书数据                |
| picture  | object | 图片数据                |
| network  | object | 网络资源                |
| metadata  | object | 元数据                |
| buildingTotal  | object | 数字资源建设总量  |
| resCloseDate  | object | 截至日期                |


示例:

```json
{
  newspaper:{
    name:"报纸",
    value: "630"
  },
  book:{
    name:"图书",
    value: "472万"
  },
  audio:{
    name:"音频",
    value: "94,835"
  },
  periodical:{
    name:"期刊",
    value: "1,542万"
  },
  video:{
    name:"视频",
    value: "95,613"
  },
  tool:{
    name:"工具书",
    value: "100"
  },
  picture:{
    name:"图片",
    value: "52万"
  },
  network:{
    name:"网络资源",
    value: "1847万"
  },
  metadata:{
    name:"元数据",
    value: "1702万"
  },
  buildingTotal:{
    name:"数字资源建设总量",
    value: "2.21万"
  },20191207
  resCloseDate: {
    year: "2018",
    month: "12"
  }
}
```

自己写了一大堆拼凑的方法,只供自己参考吧:

@Slf4j
@Controller
@RequestMapping("/bddPoolBrpdcp")
public class BddPoolBrpdcpController {
    @Resource
    IBddPoolBrpdcpService iBddPoolBrpdcpService;


    @RequestMapping("/getAll")
    @ResponseBody
    public List<DataSource> bddPoolBrpdcpListAll(){
        List<DataSource> datasources=new ArrayList<>();
        List<BddPoolBrpdcp> bddPoolBrpdcps = iBddPoolBrpdcpService.selectList(null);
        DataSource dataSource = new DataSource();
        Pojo1 pojo1 = new Pojo1();
        for(BddPoolBrpdcp list:bddPoolBrpdcps){
            if(list.getRescode().equals("5")){
                pojo1.setName(list.getResname());
//               pojo1.setValue(list.getResnum());
                dataSource.setNewspaper(pojo1);
                datasources.add(dataSource);
            }
        }
        return datasources;
    }

    /**
     * localhost:8081/bddPoolBrpdcp/getAllMap
     * @return
     */
    @RequestMapping("/getAllMap")
    @ResponseBody
    public Map<String,Object> bddPoolBrpdcpListAll1() throws ParseException {
        List<BddPoolBrpdcp> bddPoolBrpdcps = iBddPoolBrpdcpService.selectList(null);

        DataSource dataSource = new DataSource();
        Map<String,Object> map=new HashMap<>();
        List<Pojo1> listdata=new ArrayList<>();

        for(BddPoolBrpdcp list:bddPoolBrpdcps){
            Pojo1 pojo1 = new Pojo1();
            Pojo2 pojo2 = new Pojo2();
//            String resname = list.getResname();
//            pojo1.setName(resname);
//            BigDecimal resnum = list.getResnum();
//            String str= String.valueOf(resnum);
//            pojo1.setValue(str);

            if(list.getRescode().equals("5")){//报纸
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str);

                dataSource.setNewspaper(pojo1);
                map.put("newspaper",dataSource.getNewspaper());
            }else if(list.getRescode().equals("1")){//视频
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                String str1;
                str1=str.substring(0,2)+","+str.substring(2,str.length());
                pojo1.setValue(str1);

                dataSource.setVideo(pojo1);
                listdata.add(dataSource.getVideo());
                map.put("video",dataSource.getVideo());
            }else if(list.getRescode().equals("2")){//音频
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                String str1=str.substring(0,2)+","+str.substring(2,str.length());
                pojo1.setValue(str1);

                dataSource.setAudio(pojo1);
                map.put("audio",dataSource.getAudio());
            }else if(list.getRescode().equals("3")){//中文图书-->图书,472-->万
                String resname = list.getResname();
                pojo1.setName(resname.substring(2,resname.length()));
                String str=list.getQuanunit().substring(0,1);
                BigDecimal resnum = list.getResnum();
                pojo1.setValue(String.valueOf(resnum)+str);

                dataSource.setBook(pojo1);
                map.put("book",dataSource.getBook());
            }else if(list.getRescode().equals("4")){//中文期刊-->期刊,1542-->1,542万
                String resname = list.getResname();
                pojo1.setName(resname.substring(2,resname.length()));

                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str.substring(0,1)+","+str.substring(1,str.length())+list.getQuanunit().substring(0,1));

                dataSource.setPeriodical(pojo1);
                map.put("periodical",dataSource.getPeriodical());
            }else if(list.getRescode().equals("6")){//图片  张-》万张
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str+list.getQuanunit().substring(0,1));

                dataSource.setPicture(pojo1);
                map.put("picture",dataSource.getPicture());
            }else if(list.getRescode().equals("7")){//工具书
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str);

                dataSource.setTool(pojo1);
                map.put("tool",dataSource.getTool());
            }else if(list.getRescode().equals("8")){//网络资源 1847-->1,847万
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str.substring(0,1)+","+str.substring(1,str.length())+list.getQuanunit().substring(0,1));

                dataSource.setNetwork(pojo1);
                map.put("network",dataSource.getNetwork());
            }else if(list.getRescode().equals("9")){//元数据 1702-->1702万
                String resname = list.getResname();
                pojo1.setName(resname);
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str.substring(0,1)+","+str.substring(1,str.length())+list.getQuanunit().substring(0,1));

                dataSource.setMetadata(pojo1);
                map.put("metadata",dataSource.getMetadata());
            }else if(list.getRescode().equals("11")){//资源总容量-->数字资源建设总量,2.21-->2.21万
                pojo1.setName("数字资源建设总量");
                BigDecimal resnum = list.getResnum();
                String str= String.valueOf(resnum);
                pojo1.setValue(str+list.getQuanunit().substring(0,1));

                dataSource.setBuildingTotal(pojo1);
                map.put("buildingTotal",dataSource.getBuildingTotal());
            }else if(list.getRescode().equals("10")){//==================日期格式
                SimpleDateFormat dateFormate = new SimpleDateFormat("yyyyMM");
                String s = dateFormate.format(list.getStatime());

                String year=s.substring(0,4);
                String month=s.substring(4,s.length());

                pojo2.setYear(year);
                pojo2.setMonth(month);

                dataSource.setResCloseDate(pojo2);
                map.put("resCloseDate",dataSource.getResCloseDate());
            }
        }
        return map ;
    }
	
}

其中用到了日期转换类相关,这个值得一提:

  SimpleDateFormat dateFormate = new SimpleDateFormat("yyyyMM");
  String s = dateFormate.format(list.getStatime());
  //将其转换为了201812的格式

  String year=s.substring(0,4);//取到了2018
  String month=s.substring(4,s.length());//取到了12

  pojo2.setYear(year);//封装2018
  pojo2.setMonth(month);//封装12

  dataSource.setResCloseDate(pojo2);//再次封装
  map.put("resCloseDate",dataSource.getResCloseDate());//最后封装进map

日期格式化示例:

数据库中的日期如下所示:将取得的日期设置为所需要的格式即可:即加入需要的日期是这样的:2019-11-26 18:29,则需要我们自己进行转换:

后端编写前端接口规范:

转换代码如下:参考代码如下:

   /**
     * 完整访问地址:http://localhost:8081/v1/api/api/testBaidu/test
     * @return
     * @throws ParseException
     * TestBaiduEO类是转换的数据表中对应的那个类,
     */
    @GetMapping("/test")
    public Result<List<Map<String,Object>>> get() throws ParseException {
        List<TestBaiduEO> dataList=service.test();
        List<Map<String,Object>> test=new ArrayList<>();
        for(TestBaiduEO tmpData:dataList){
            Map<String,Object> tmpMap=new HashMap<>();
            SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMddHHmm");
            Date tmpDate=dateFormat.parse(tmpData.getTimeTitle());
            //prarse中需要的是String类型的日期格式,
            //format中需要的是Date的类型的转换格式;

            //格式化数据
            tmpMap.put("time",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tmpDate));

            test.add(tmpMap);
        }
        return Result.ok(test);
    }