IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 2021-10-11 -> 正文阅读

[大数据]2021-10-11

接口开发


前言

接口开发是后端的重要工作,是实现逻辑功能的重要工具,接口会生成用户需要的数据,然后由前端根据这些数据渲染成用户所需要的页面,举一个例子,当我们在搜索引擎上搜索一个字段时,会调用后端接口,从数据库等处查询我们需要的数据,然后返回给前端,由前端根据查询到的数据渲染成我们看到的搜索引擎的界面。这就是接口的意义所在,我们能看到展现的页面,一切的根本就在于接口。


一、实体类

下面实体类都是和接口相关的:
1.ResultModel
这个类是基础实体类,有如下属性:
success:返回结果标识,是一个布尔值,true / false(成功 / 失败)
message:描述信息,错误时,可以在这里填写错误的详细信息
data:数据,是一个泛型,可以是数组或者对象等等,成功并且需要返回数据时,才有该参数

2.ApiResultModel
结构关系如下:
ResultModel
└── ApiResultModel
在这个类里面增加了 code 属性,也是一个泛型,你可以自定义你的返回码类型,可以是整数,或者字符串。

3.PageResultModel
结构关系如下:
ResultModel
└── PageResultModel
这个类主要主要分页返回结果,所以,增加了以下属性:
total:数据总条数,Long型
size:每页条数,整数
pages:总页数,Long型
current:当前页,Long型
上面三者都是父子类的关系,拥有者共通的特性。

4 .Helper工具类
ResultHelper
ResultHelper是与ResultModel对应的

success(String message)
成功,携带描述信息

success(String message, T data)
成功,携带描述信息和数据

error(String message)
错误,携带详细的描述信息

ApiResultHelper
ApiResultHelper是与ApiResultModel对应的

success(S code, String message)
成功,携带返回码和描述信息

success(S code, String message, T data)
成功,携带返回码、描述信息和数据

error(S code, String message)
错误,携带错误码和详细描述信息

PageResultHelper
PageResultHelper是与PageResultModel对应的

success(String message)
成功,携带描述信息

success(String message, T data)
成功,携带描述信息和数据

success(String message, T data, long total, int size, long pages, long current)
成功,携带描述信息、数据、总数、每页条数、总页数、当前页

error(String message)
错误,携带详细的描述信息

二、接口开发案例

1.利用Helper进行返回

/**
 * 添加方法示例
 * @return {@link ResultModel}
 */
@ApiOperation(value = "添加方法示例")
@PostMapping
public ResultModel<?> add() {
  return ResultHelper.success("添加成功");
}

结果:

{
  "success": true,
  "message": "添加成功"
}

2.ResultUtils工具类


import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public  abstract class ResultUtils {
    public static Integer SUCCESS_CODE = 200;
    public static String SUCCESS_MSG = "处理成功";
 
    /**
     * 失败
     * 如果需要特殊的错误代码表示特定的含义 可自行添加
     */
    public static Integer ERROR_CODE = 201;
    public static String ERROR_MSG = "网络错误";
 
 
 
    public static Map<String, Object> success() {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", SUCCESS_CODE);
        resultMap.put("msg", SUCCESS_MSG);
        return resultMap;
    }
 
    public static Map<String,Object> errorCode(Integer code,String msg){
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", code);
        resultMap.put("msg", msg);
        return resultMap;
    }
    /**
     * 成功返回  包含返回信息。
     * @param result  需要返回的信息。
     * @return
     */
    public static Map<String, Object> success(Object result) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", SUCCESS_CODE);
        resultMap.put("msg", SUCCESS_MSG);
        resultMap.put("info", result);
        return resultMap;
    }
    public static Map<String, Object> success(List list,int count) {
    	Map<String, Object> resultMap = new HashMap<String, Object>();
    	resultMap.put("code", SUCCESS_CODE);
    	resultMap.put("msg", SUCCESS_MSG);
    	resultMap.put("info", list);
    	resultMap.put("total", count);
    	return resultMap;
    }
 
    /**
     *  错误返回标志
     *  例如 ajax请求 失败 直接返回错误。
     * @return
     */
    public static Map<String, Object> fail() {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", ERROR_CODE);
        resultMap.put("msg", ERROR_MSG);
        return resultMap;
    }
 
    /**
     * 错误码+错误信息
     * @param
     * @return
     */
    public static Map<String, Object> fail(String msg) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", ERROR_CODE);
        resultMap.put("msg", msg);
        return resultMap;
    }
    public static Map<String, Object> noFocus(String msg) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", 260);
        resultMap.put("msg", msg);
        return resultMap;
    }
}

现在基于工具类来实践success方法

/**
 * 删除方法示例
 * @return 
 */
@ApiOperation(value = "删除方法示例")
@DeleteMapping
public ResultModel<?> delete() {
    return ResultUtils.success();
}

返回结果:

{
  "success": 200,
  "message": "处理成功"
}

再基于工具类实践fail方法

/**
 * 修改方法示例
 * @return {@link ResultModel}
 */
@ApiOperation(value = "修改方法示例")
@PutMapping
public ResultModel<?> update() {
    return ResultUtils.fail( );
}

返回结果:

{
  "success": 201,
  "message": "网络错误"
}

上面只是举例,我们不讨论修改不成功和网络错误的关系。


查询案例

基础工作都是基于工具类实现,我们需要在工具类中去实现定义,然后再基于定义上去返回结果。

public class ResultUtils {

    /**
     *  成功
     */
    public static ResultModel <?> success() {
        return ResultHelper.success("Success");
    }

    /**
     *  成功,携带数据
     * @param data 数据
     * @param <T>  数据的类型
     */
    public static <T> ResultModel <T> success(T data) {
        return ResultHelper.success("Success", data);
    }

    /**
     *  错误,携带详细的错误描述信息
     * @param message 详细的错误描述信息
     */
    public static ResultModel <?> error(String message) {
        return ResultHelper.error(message);
    }
}
@ApiOperation(value = "查询方法示例")
@GetMapping
public ResultModel<?> get() {
    List<Map<String, String>> list = new ArrayList<>();
    Map<String, String> map1 = new HashMap<>();

    map1.put("name", "1");
    map1.put("desc", "11");
    list.add(map1);

    Map<String, String> map2 = new HashMap<>();
    map2.put("name", "22");
    map2.put("desc", "2222");
    list.add(map2);

    Map<String, String> map3 = new HashMap<>();
    map3.put("name", "4444");
    map3.put("desc", "44444444");
    list.add(map3);

    return ResultUtils.success(list);
}

返回结果如下

{
  "success": true,
  "message": "Success",
  "data": [
    {
      "name": "1",
      "desc": "11"
    },
    {
      "name": "22",
      "desc": "2222"
    },
    {
      "name": "4444",
      "desc": "44444444"
    }
  ]
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:30:47  更:2021-10-13 11:32:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:06:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码