接口一:

前端接口需要的返回值:

| 字段  | 类型   | 描述   |
| ----- | ------ | ------ |
| 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
}
```

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

java后端推送给前端的技术 java后端怎么写接口给前端_前端接口根据规范编写

java后端推送给前端的技术 java后端怎么写接口给前端_字段_02

利用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是对应表生成的表的类,最终返回一条了数据;

测试结果一:

java后端推送给前端的技术 java后端怎么写接口给前端_前端接口根据规范编写_03

接口二:

参数:

返回值:

| 字段   | 类型           | 描述                  |
| ------ | -------------- | --------------------- |
| 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",
  }
```

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

java后端推送给前端的技术 java后端怎么写接口给前端_Source_04

java后端推送给前端的技术 java后端怎么写接口给前端_数据_05

返回数据编写:

@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 是数据表相关属性对应的类,

测试结果二:

java后端推送给前端的技术 java后端怎么写接口给前端_java后端推送给前端的技术_06

接口三:

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

java后端推送给前端的技术 java后端怎么写接口给前端_数据_07

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

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

java后端推送给前端的技术 java后端怎么写接口给前端_数据_08

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

java后端推送给前端的技术 java后端怎么写接口给前端_字段_09

java后端推送给前端的技术 java后端怎么写接口给前端_字段_10

 

参数:
返回值:

| 字段   | 类型           | 描述                  |
| ------ | -------------- | --------------------- |
| 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,则需要我们自己进行转换:

java后端推送给前端的技术 java后端怎么写接口给前端_java后端推送给前端的技术_11

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

/**
     * 完整访问地址: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);
    }