`

一种接口统一返回值的设计方法

 
阅读更多

应用中经常会涉及到server和client的交互,目前比较流行的是基于json格式的数据交互。但是json只是消息的格式,其中的内容还需要设计。当接口很多的时候,保持返回值格式统一很重要,因为返回值格式一致,客户端才能相应地做统一的处理

以前有一个产品使用的接口格式还不错,所以也继续带到现在的产品中使用,格式类似:

{
    "code":0 ,
    "result":{
        exist:true ,
        count:3
    }
}

或者:

{
    "code":1 ,
    "error":{
        errorCode:1003453 ,
        errorMsg:"database error"
    }
}

响应分为2种情况,正确响应和异常响应。正确响应的code值是0,附带result字段包含响应的详细信息;异常响应的code值是1,附带error字段包含详细的错误信息。result里面具体的内容是接口自定义的

关键是,如何区分“正常响应”和“异常响应”,项目组应该有统一的认识。只要server端的接口,正确地响应了业务,就算是正常响应。例如,对于“该手机号是否允许注册”这个查询接口,“允许注册”以及“该手机号已经被注册”,都应该算是“正确响应”,code值都是0,具体的判断在result里区分;“服务器500错误”以及“查询失败”,这些才是“异常响应”,code值是1,具体的错误信息在error里区分

关键就是,code只应该表示调用是否成功,不应该包含业务含义。不能用code是0还是1来区分用户是否已存在,只能用来表示这次查询是否成功。否则的话,像上面这个接口,如果用code = 1来表示用户不存在,那像网络错误,500错误就只能依赖errorCode来区分了,逻辑会很不清晰

只要所有的接口都遵循这个规则,那么在server端和client端就都可以写一个独立的组件,根据这个规则来包装接口数据

分享到:
评论

相关推荐

    springboot整合Shiro与Jwt并封装统一返回值

    son web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和...

    Java高级程序设计实战教程第一章-Java编码规范.pptx

    统一是指对于同一个概念,在程序中用同一种表示方法。例如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。 达意是指标识符能准确地表达出它所代表的...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    抽象是没有具体的代码实现,抽象代表了一种可扩展 。 参阅教材例9.1 第11页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第11页。 单一职责原则和最少知识原则 在单一职责(Single ...

    AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求

    最近的一个项目中,需要通过 JavaScript 提交表单数据到另一个域名下的PHP接口(因为数据较大,需要HTTP POST方式提交),并获取PHP接口的返回值,在页面无刷新、无跳转的情况下,更新div标签内的内容。  浏览器...

    windows 程序设计

    MS-DOS提供给用户一种命令列接口,提供如DIR和TYPE的命令,也可以将应用程序加载内存执行。对于应用程序写作者,它提供了一组函数呼叫,进行文件的输入输出(I/O )。对于其它的外围处理-尤其是将文字或图形写到...

    语言程序设计课后习题答案

    虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新...

    java-servlet-api.doc

    JavaServletAPI提供了一个简单的接口,通过这个接口,Servlet引擎可以有效地跟踪用户的会话。 建立Session 因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...

    cloudbase-context:腾讯云开发云数据库统一管理工具包,之前全局前、后置处理请求所携带的信息,分离业务以及请求代码相关。方便后续开发容错,随时做处理

    名称空间支持在大型项目中会经常碰见一种情况,不同的业务模块有着很多非常相似(甚至相同)的数据接口。cloudbase-context在名称空间方面做了一定的设计,书写十分灵活。数据请求参数/返回值处理在cloudbase-context...

    疯狂JAVA讲义

    4.5.1 理解数组:数组也是一种类型 88 学生提问:int[]是一种类型吗?怎么使用这种类型呢? 88 4.5.2 定义数组 88 4.5.3 数组的初始化 89 学生提问:能不能只分配内存空间,不赋初始值呢?89 4.5.4 使用数组 90...

    swiftboot:基于Spring Boot,Spring MVC,Spring Data 的企业Web应用快速开发开发框架。A rapid development framework based on Spring Boot, Spring MVC and Spring Data for enterprise

    SwiftBoot 采用一种折中的理念,它并不会覆盖到开发的方方面面,但是它提供必要的和常见的功能支持,以减少重复性的工作和提高开发质量。 特性 开箱即用,只需要很少的配置即可使用,用更少的代码完成更多的工作。 ...

    window32 API大全 win32编程

    多文档接口(MDI)是应用程序定义用户界面的一种规范,在这种界面下,用户可以同时使用多个文档。 资源函数(Resource) 一个资源是一些二进制数据,可以添加到Win32应用程序的可执行文件中。资源既可以是标准的,...

    C#微软培训资料

    第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET....

    PHP 面向对象技术(全面讲解).txt

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程 架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:...

    Go语言Mock使用基本指南详解

    在项目之间依赖的时候我们往往可以通过mock一个接口的实现,以一种比较简洁、独立的方式,来进行测试。但是在mock使用的过程中,因为大家的风格不统一,而且很多使用minimal implement的方式来进行mock,这就导致了...

    DWR.xml配置文件说明书(含源码)

    一种情况是因为DWR1.0的解析器中有个Bug,在有些场合会无法处理返回值的类型.所以应该要避免这种情况的发生. 一种情况是因为解析器是一个语法宽松的解析器,他不象编译器一样对语法有非常严格的要求,所有有时可能一些...

    Angularjs Promise实例详解

    一、什么是Promise ...此外,Promise对象提供了统一的接口,使得控制异步操作更加容易。 Promise对象有以下2个特点: 1.对象的状态不受外界影响。 Promise对象代表一个异步操作,有三种状态:Pending(进行中

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

Global site tag (gtag.js) - Google Analytics