精华内容
下载资源
问答
  • 接口返回值
    千次阅读
    2021-03-05 08:09:26

    为什么要统一接口返回值

    统一返回值类型是接口开发中的一种良好的开发习惯(企业级开发基本都有),统一接口返回值的目的是为了加快开发速率以及形成团队良好的代码规范。举个例子,请看下面这张图:统一接口返回值类型.png

    上图中有三个接口,返回值类型分别是String,Map,Object,三个接口本身都没有问题,这也是没有参加过工作的同学最常见的写法,前端要什么类型我返回什么类型。这么写可以吗?其实也可以,上图已经返回预期的值。

    工作中我们很少会这么去定义返回值,这么写是不利于开发进度与团队协作的,为什么这么说呢?缘由如下:

    1. 于后端而言,所有接口返回值类型统一,就会显得代码更规范
    2. 与前端而言就相对重要了,一个接口返回一种类型,那么前端就需要写不同的代码来处理不同的返回结果,如果后端统一返回值,前端就可以写一个统一的处理返回值的代码

    统一接口返回值

    看看统一接口返回值之后,前端接收的值是什么样的:

    统一接口返回值.png

    通过两张图的对比,其实后端代码并没有大的改变,更改最大的点在于三个接口的返回值类型都变成了我定义的RestResult,然后前端接收的值就赏心悦目了,前端处理接收的数据时,只要获取key为data的value值即可,好不好相信都能看的见。

    总结

    统一接口返回值是企业中最基本的要求,使用它的原因不止于上文,比如msg可以告诉前端调用失败还是 成功,code可以告诉前端是做种类型的错误(404,500等),它的编写方式有很多,比如工厂模式创建(本文采用的方法),编写一个统一返回值的类等等。方式有很多,如果大家想了解如何设计一个统一返回值的类,请评论区留言,以后会专门出一篇文章来说明

    更多相关内容
  • 3、A接口返回值例如token赋值给B接口请求参数操作步骤; 图文并茂 1 接口参数化 第一步:点击右上角图标,打开环境配置页面,选择Globals,设置全局变量; 第二步:添加变量名称,设置对应的变量值,保存; 第...
  • 主要介绍了C# WebApi 接口返回值不困惑:返回值类型详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 当你一切准备工作做好时,那么我们开始第一步: 第一步 右键单击 选择你需要修改返回接口 在展示框中选择 Breakpoints 设置断点 ,设置断点完毕后进行第二...可以在里面随意的修改返回值了 这样就可以了 ...

    当你一切准备工作做好时,那么我们开始第一步:

    第一步

    右键单击 选择你需要修改返回接口

    在展示框中选择 Breakpoints 设置断点  ,设置断点完毕后进行第二步

    第二步 重新请求该接口

    按流程顺序走

     

      

     

    可以在里面随意的修改返回值了

     

     这样就可以了

    展开全文
  • 碰到一个业务场景,需要叫旁边的同事,李同学开了一个接口,发现给我的返回值中带了枚举类型的变量,我顺口提了一嘴,这种接口返回值最好不要用这种包含枚举类型的对象 李同学问我为什么,我就直接说了,在《Java...

    引言

    在这一周的工作中

    碰到一个业务场景,需要叫旁边的同事,李同学开了一个接口,发现给我的返回值中带了枚举类型的变量,我顺口提了一嘴,这种接口返回值最好不要用这种包含枚举类型的对象

    李同学问我为什么,我就直接说了,在《Java开发手册》中强制规定二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象

    但是,事后想了一想,孤尽老师在《手册》中写的的这条规定一定正确吗?

    正文

    在这里插入图片描述

    杨小帅:不懂同学,你这个接口咋回事,序列化异常了?

    image-20210808153018319

    不懂尽管心里慌的一批,但是表面仍然装作稳得一笔:不是吧,肯定是你调用的方式有误、你自己在回去检查检查、我都没动这个接口

    不懂自信的三连击,让小帅疑惑的回到了座位

    此时,不懂连忙打开 idea “我就改了一个接口的枚举值,咋会反序列化异常,不对,我记得手册中讲过 接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象,完蛋完蛋,写代码的时候咋忘记了呢,让我快改回去,只要我改的够快,就没人发现我的 bug“

    此时杨小帅已经悄悄的站在不懂的工位后,看见了不懂在改枚举,“不懂就是你,这个规范你都能忘记,你咋回事”

    不懂略显羞涩的笑了一下:“失误,失误,可控,可控”

    杨小帅:“像这种二方库接口返回值记得多操个心”

    此时小美凑了过来:“啥是二方库?”

    杨小帅甩了甩头发:二方库也称作二方包,一般指公司内部发布到中央仓库,可供公司内部其他应用依赖的库(jar 包);一方库是本工程内部子项目模块依赖的库;三方库为公司之外的开源库,比如像 fastjson、easyexcel 这种

    小美:为啥这种接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象?

    杨小帅:是这样的,不懂改了枚举,就导致我们双方的枚举不同,在接口解析中就出现了,反序列化时出现异常

    比如:你的本地枚举类,有一个天气 Enum:SUNNY, RAINY, CLOUDY,如果根据天气计算心情的方法:guess(WeatcherEnum xx),传入这三个值都是可以的

    返回值为 Weather guess(参数),那么对方运算后,返回一个 SNOWY,本地枚举里没有这个值,就异常了

    小美点了点头,原来是这样啊

    此时,王经理走了过来,向大家问到:这条规范一定合适吗?

    小美:我觉得小帅说的很有道理啊,接口返回值使用枚举的确会造成这样的异常呀

    王经理:大家觉得枚举存在的意义是什么?

    不懂:这题我会,就是顾名思义,见到就是知道这个字段是什么意思,不像 String 类型,假设传个1、2、3,不知道传的啥意思

    王经理:说的有道理,枚举,就是把已知的全部罗列出来。作为二方/三方库的提供者,我支持什么,你们就是用什么,这样是安全的。库版本升级后我支持了更多,你不知道情况下自然不会使用,反正我不支持的参数你不可能传递给我,所以作为输入,枚举简直就是安全保障,但作为返回值,情况就反过来了。我先告诉你这些这些可以有,然后你规定这些这些可以有,除此之外都没有。但是,是我说了算而不是你,所以你的规定狗屁不是。提供者偷偷升级,抛异常的可能性直趋百分百

    那我们碰到,像不懂这样的坑货,偷偷升级怎么办,这个接口调用方少的可以通知同步升级,那么,要是一个接口有百十个调用方呢,可以做到同步升级吗?

    那么可不可以在我们调用的时候,加强我们框架的健壮性,如果发序列化时发现了新的枚举值,则这个字段设置为null,就像Apache Thrift代码里面写的那样?

    王经理:好,今天就讲这些,你们思考思考

    小美、不懂、小帅陷入了思考中…

    总结

    其实呢

    在二方库返回的接口中,如果该枚举的值是必须使用到枚举内部定义的方法和属性的,那么配置无法转换时就报错的策略

    如果该枚举在业务中可以只处理认识的枚举,不认识的枚举不进行处理的,就配置转换为null的策略

    如果该枚举在业务中不认识时当作某个默认值处理,就配置转换为默认值的策略

    如果该枚举在本地业务根本没有使用,并不关心,那么可以在定义接收对象时直接定义为int或者String类型.

    这样在整体序列化框架中进行自定义枚举类的转换对安全检查和扩展性的兼容性更加好,既可以兼容到枚举的好处,也可以健壮我们的RPC框架,那么能在顶层做的事情,是不是可以改良下,让开发者更舒服呢?

    当然一切的出发点,还是基于我们目前的一个业务场景和实际情况来的,使用的时候可以多多思考

    附上孤尽老师关于这条规定的回答

    由于升级原因,导致双方的枚举类不尽相同,在接口解析,类反序列化时出现异常。
    Java 中出现的任何元素,在 Gosling 的角度都会有背后的思考和逻辑(尽管并非绝对完美,但 Java 的顶层抽象已经是天才级了),比如:接口、抽象类、注解、和本文提到的枚举。枚举有好处,类型安全,清晰直接,还可以使用等号来判断,也可以用在 switch 中。它的劣势也是明显的,就是不要扩展。可是为什么在返回值和参数进行了区分呢,如果不兼容,那么两个都有问题,怎么允许参数可以有枚举。当时的考虑,如果参数也不能用,那么枚举几乎无用武之地了。参数输出,毕竟是本地决定的,你本地有的,传送过去,向前兼容是不会有问题的。但如果是接口返回,就比较恶心了,因为解析回来的这个枚举值,可能本地还没有,这时就会抛出序列化异常。
    比如:你的本地枚举类,有一个天气 Enum:SUNNY, RAINY, CLOUDY,如果根据天气计算心情的方法:guess(WeatcherEnum xx),传入这三个值都是可以的。返回值:Weather guess(参数),那么对方运算后,返回一个 SNOWY,本地枚举里没有这个值,傻眼了。

    展开全文
  • POSTMAN提取接口返回值

    2021-08-03 10:06:35
    记录一下 创建一个请求在Tests模块写入提取方法(如图) 可点击右侧”Set a ... set(”token“,tk)中的 token为全局变量名称,切记后边的tk(变量名)不要加引号。 ...下个接口直接调用全局变量就可以了。 ...

    记录一下

    创建一个请求在Tests模块写入提取方法(如图)

    可点击右侧”Set a globals variable“ 直接生成写入全局变量语句

    set(”token“,tk)中的 token为全局变量名称,切记后边的tk(变量名)不要加引号。

    写好之后send一下 请求成功后,点击小眼睛查看会自动写入一个名为token的全局变量。

    下个接口直接调用全局变量就可以了。

    返回数据存在多个相同字段时怎么提取自己想要的

    {

        "code": "0",

        "data": [

            {

                "corpCode": "3702011121",

                "corpId": 261,

                "logo": "",

                "orgId": 1,

                "orgModel": 1,

                "orgName": "********",

                "orgType": 1,

                "unionId": 29

            },       

            {

                "corpCode": "6401011417",

                "corpId": 631,

                "logo": "",

                "orgId": 9,

                "orgModel": 1,

                "orgName": "**********",

                "orgType": 1,

                "unionId": 3541

            },

            {

                "corpCode": "999999",

                "corpId": 9999,

                "logo": "",

                "orgId": 15,

                "orgModel": 1,

                "orgName": "*******",

                "orgType": 1,

                "unionId": 29

            },

            {

                "corpCode": "3702010330",

                "corpId": 272,

                "logo": "",

                "orgId": 16,

                "orgModel": 1,

                "orgName": "**********",

                "orgType": 1,

                "unionId": 29

            }

        ],

        "message": "成功!",

        "traceId": "ac1407b0162797857631783937"

    }

    返回值如上

     可以看到返回值是分为4个数据组的,我们想要第几组中的数据,可以在返回值data后加上他的索引。 上图所示我提取的是第三组中的orgId

    第一个data是接口的所有返回值,第二个data是返回值data字段所包含的数据,我们需要第3组中的orgId,加上索引。再加上想要提取的字段就ok了

    其实第一个提取token的可以省略第二步的。不想改了 就这样吧

     

    展开全文
  • Postman提取接口返回值他用1、需求来源2、解决方案 1、需求来源 日常生产开发过程中,有时我们会使用Postman对需要的接口进行测试联调,此时往往会伴随:请求登录接口 --> 登录完成返回token --> 其他接口请求...
  • 在第一篇中,我们对接口返回值做了统一封装,轻松返回结果。 @GetMapping("/fail_response") public Result fail_response() { return Result.fail("失败了"); } @GetMapping("/success_response") public ...
  • 前后端分离开发模式中,后端接口基本上都是通过json格式传回前端,通过统一的返回格式封装,可以大大提高开发效率,如: { "code": 0, "msg": "成功", "data": { "uid": "hjgfyg" } } 直接上代码,两个文件...
  • chrome插件 修改接口返回值

    千次阅读 2022-04-11 11:27:30
    谷歌浏览器插件:修改接口响应、重定向以及拦截url 西凉的悲伤 于 2021-11-05 09:35:33 发布 1338 收藏 5 分类专栏: 工具 文章标签: 浏览器 浏览器插件 url拦截 接口拦截 修改接口响应 版权 工具 专栏收录该...
  • header();
  • shell 脚本获取接口返回值

    千次阅读 2020-10-27 12:12:48
    /bin/bash 我这边接口返回值就是 int 类型的参数,所有返回值 result 可以直接使用 if [ $result_code = “1” ]; 进行判断(当前接口为定时任务)。 如果接口存在其他处理需要 set 截取对应的字符 exit 函数设置...
  • } } [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5iYDpFeu-1602509678067)(F:\Mrw-个人文档\一些图片\Typora\接口返回值统一标准1.png)] 最终浏览器接收到的结果是一个 JSON 格式的...
  • 获取http接口返回值

    2021-11-15 15:38:22
    1.获取http接口返回值 /** *description:获取http接口返回值 有参数 * 返回值为 jsonarray 字符串形式 *@author: fuxb *@date: 2021/7/28 11:00 @param path http 接口地址 @param post 参数 形式为 param...
  • charles修改接口返回值

    2019-10-05 10:26:40
    我们在测试app时,如果想看大数据量或者空数据时的展示情况,可以通过charles修改接口返回值来实现。 步骤1:手机连接代理 步骤2:app端请求接口,查看charles抓包情况 步骤3:选择想要修改返回值的接口,右键...
  • 1.第一个接口:①按照接口文档,编写第一个接口脚本:(接口返回productinfo字段) ②在Tests中获取productinfo接口,并设置成环境变量 //将数据解析成json格式 var data=JSON.parse(responseBody); //获取...
  • C++2005调用C#Webservice接口返回值为List,C++2005调用C#Webservice接口返回值为List
  • jmeter接口测试断言
  • //摘要:// Defines a command that asynchronously creates an
  • C# 接口返回值处理

    2021-08-20 14:39:23
    当前端要求接口返回的数据需要做特殊处理时 当我们已经通过三层获取当相应的datatable,如果直接将datatable返回给前端,前端无法渲染出页面效果,要求我们对接口返回数据做特殊处理(多用于EChart表格等) 那么这个...
  • 在阅读《阿里巴巴Java开发手册》时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下: 在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内部发布到中央...
  • 另外一个接口使用上面接口返回值中的id,这里是随机传参 结果: 成功传参,每个详情页基本不一样,从上面获取的所有id中随机传值。 五、特别关注 1、json串 []表示对象组成的数组,{}表示对象 2、如果需要同时匹配...
  • 在阅读《阿里巴巴Java开发手册》时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下:在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内...
  • springboot的接口返回值统一标准格式

    千次阅读 2020-03-02 23:21:03
    response统一格式 一、目标: 弄清楚为什么要对springboot,所有...二、为什么要对springboot的接口返回值统一标准格式? 我们先来看下,springboot默认情况下的response是什么格式的 第一种格式:response为...
  • 方法:将需要引用的返回值设置成环境变量,在下一个接口的参数中做引用。 步骤一.在需要获取返回值接口test中写入以下代码: var ID = JSON.parse(responseBody); pm.environment.set("uid",ID.data.id); ...
  • letjson=JSON.parse(responseBody); 解码json letuser_token=json.data.token; 取值 pm.globals.set("user_token",user_token); 你要设置的全局变量
  • spring boot 接口返回值封装

    千次阅读 2019-06-04 09:26:18
    Spring Boot 集成教程 ...Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2) – 使...
  • Charles修改接口返回值

    2020-09-03 15:36:17
    之后,点击右边location的add按钮,添加你需要修改返回值接口,其他数据可不填 接口添加完成后,点击rules的add按钮,添加rewrite的规则,设置如下图所示,value为需要修改的值,注意这里无法区分key,之后点击...
  • 本小节我们将学习如何定义后端的接口。 开发之前,我们得分析后端需要提供哪些接口。 我们可以根据需求文档来进行分析。 第一个功能是用户自动登录,那么我们后端需要提供一个接口实现用户的静默注册,什么是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 731,738
精华内容 292,695
关键字:

接口返回值

友情链接: test_batch.zip