RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。...场景 API 统一返回参数 对于实际开发很重要 可规范API接口格式 便于统一调取或做封装 对于第三方调用很友好 也是最重要的一点(不会被第三方调用者评论,你这API设计的真”辣鸡“,简直没法看!)...分析 继承与HashMap,所以返回统一返回参数本身也就是一个Map,并且实现 于Serializable可反序列化。...org.springframework.http.HttpStatus; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** * 统一返回参数...public String getJsonStr() {//返回json字符串数组,将访问msg和key的方式统一化,都使用data.key的方式直接访问。
题目部分 存储过程或函数如何返回集合类型? 答案部分 TABLE()函数可接受查询语句或游标作为输入参数,并可输出多行数据,称为表函数。...所以,存储过程或函数返回集合类型主要采用的是表函数和PIPELINED函数(管道化表函数)及数组结合的方式。当然,也可以采用存储过程返回系统游标SYS_REFCURSOR或自定义游标的方式。...,需要设置多个OUT类型的参数。...OTHERS THEN NULL; END; 查询: SELECT F_GET_SYS_REFCURSOR_LHR(7566) FROM DUAL; 结果如下所示: 有关存储过程或函数返回集合类型的写法有多种...,作者把这多种方式写成了一个包,已发布到博客(地址:http://blog.itpub.net/26736162/viewspace-2131977/)和公众号上,读者可自行下载阅读。
文章目录: 前后端接口交互 接口返回值约定 返回值规范 正确返回 错误返回 统一定义错误码 错误码规范 Controller 层如何用?...接口返回值约定 返回值规范 设置返回的 HTTP 响应状态码; 发生错误时,需设置 Response Body 的错误码和描述信息; 正确返回 HTTP 响应状态码,设置成 200,Response Body...:"message"` // 描述信息 } 统一定义错误码 错误码规范 统一在一个文件中定义错误码; 错误码长度为 5 位; 第 1 位表示错误是哪种级别?...第 2 位和第 3 位表示错误是哪个模块?例如:01 为用户模块,02 为订单模块,可标记 99 个模块。 第 4 位和第 5 位表示具体是什么错误?...3、如何统一对返回数据进行敏感数据脱敏? 4、如何设计接口日志,便于接口联调时快速进行错误定位? 5、关于接口文档,如何进行自动生成?听说过 swagger 还不知道如何使用?
因为老顾这篇主要介绍的是API接口,所以我们聚焦点,其他的模块小伙伴们自行去补充。...接口交互 前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。...我们可以参考这样的设计,这样的好处就把错误类型归类到某个区间内,如果区间不够,可以设计成4位数。...一般的设计是和code状态码一起设计,如 ? 再在枚举中定义,状态码 ? 状态码和信息就会一一对应,比较好维护。 Data 返回数据体,JSON格式,根据不同的业务又不同的JSON体。...注解 3、核心步骤就是实现接口ResponseBodyAdvice和@ControllerAdvice,判断是否需要包装返回值,如果需要,就把Controller接口的返回值进行重写。
php Laravel 最近在用 Laravel 写 API 接口,记录一下统一返回JSON响应 和 返回的错误格式 因为你不设定的话,除了ajax请求会返回 json 格式,其他方式访问出现错误会重定向到.../login 或者 /home 下面教你简单设置 首先响应格式 和统一返回错误提示 第一步编写 BaseRequest <?...Illuminate\Http\Exceptions\HttpResponseException; class BaseRequest extends FormRequest { // 定义统一的返回错误格式...msg'=>$validator->errors(), 'data'=>null ],422))); } // 是否所有response 都是JSON 返回
因为这篇主要介绍的是API接口,所以我们聚焦点,其他的模块小伙伴们自行去补充。...接口交互 前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。...我们可以参考这样的设计,这样的好处就把错误类型归类到某个区间内,如果区间不够,可以设计成4位数。...一般的设计是和code状态码一起设计,如 ? 再在枚举中定义,状态码 ? 状态码和信息就会一一对应,比较好维护。 Data 返回数据体,JSON格式,根据不同的业务又不同的JSON体。...注解 3、核心步骤就是实现接口ResponseBodyAdvice和@ControllerAdvice,判断是否需要包装返回值,如果需要,就把Controller接口的返回值进行重写。
微服务中,由于各业务团队之间的对接,各个团队之间需要统一返回格式,这样解析时不容易出现错误。因此,有必要统一返回格式。...下面我说下项目中常见的两种统一和变更返回值格式的方式ResponseBodyAdvice切面方式这种方式简单易实现,仅仅只需要实现ResponseBodyAdvice方法,然后指定要拦截的包路径即可@ControllerAdvice...{ if (VOID.equals(getReturnName(returnType))) { return null; } //基础类型做特殊处理...具体可以参考RequestMappingHandlerAdapter#initControllerAdviceCache使用更为底层的HandlerMethodReturnValueHandler来自定义返回值类型在操作的过程中也是同样的逻辑...API 接口响应格式?
一般用法 项目中最常见到的是封装一个工具类,类中定义需要返回的字段信息,把需要返回前端的接口信息,通过该类进行封装,这样就可以解决返回格式不统一的现象了。...进阶用法 解决这个问题需要两步: 自定义返回数据,统一封装数据返回格式 ResponseBodyAdvice: 该接口是SpringMVC 4.1提供的,它允许在 执行 @ResponseBody后自定义返回数据...,用来封装统一数据格式返回; 全局捕获抛出的异常 @RestControllerAdvice: 该注解是对Controller进行增强的,可以全局捕获抛出的异常。...JsonProcessingException e) { e.printStackTrace(); } } //返回类型是否已经封装...和异常处理类CustomerExceptionHandle。
无侵入式 统一返回JSON格式 其实本没有没打算写这篇博客的,但还是要写一下写这篇博客的起因是因为,现在呆着的这家公司居然没有统一的API返回格式?...在仔细的阅读了项目源码后发现,在API请求的是居然没有业务异常(黑人问好)。好吧 居然入坑了只能遵照项目风格了,懒得吐槽了。...JSON格式了, 但是我们也发现了一个问题了,想要返回统一的JSON格式需要返回Result才可以, 我明明返回Object可以了, 为什么要重复劳动, 有没有解决方法, 当然是有的啦,...Object就可以统一JSON格式了, 就不用每个返回都返回Result对象了,直接让SpringMVC帮助我们进行统一的管理, 简直完美 只想看接口哦, helloError和helloMyError...是会直接抛出异常的接口,我好像没有对异常返回进行统一的处理哦 统一返回JSON格式进阶-异常处理(@ExceptionHandler)) 卧槽, 异常处理, 差点把这茬给忘了, 这个异常处理就有很多方法了
JSON格式 其实本没有没打算写这篇博客的,但还是要写一下写这篇博客的起因是因为,现在呆着的这家公司居然没有统一的API返回格式?...在仔细的阅读了项目源码后发现,在API请求的是居然没有业务异常(黑人问好)。好吧 居然入坑了只能遵照项目风格了,懒得吐槽了。...JSON格式了, 但是我们也发现了一个问题了,想要返回统一的JSON格式需要返回Result才可以, 我明明返回Object可以了, 为什么要重复劳动, 有没有解决方法, 当然是有的啦,...Object就可以统一JSON格式了, 就不用每个返回都返回Result对象了,直接让SpringMVC帮助我们进行统一的管理, 简直完美 只想看接口哦, helloError和helloMyError...是会直接抛出异常的接口,我好像没有对异常返回进行统一的处理哦 统一返回JSON格式进阶-异常处理(@ExceptionHandler)) 卧槽, 异常处理, 差点把这茬给忘了, 这个异常处理就有很多方法了
其流程和核对规则大致如下: 1):如果expression是一个没有用括号括起来的标识符,则var的类型与该标识符的类型相同。...1),而expression是一个函数的调用,则var的类型与函数的返回值类型相同。...decltype(b+c) bc; //bc的类型为int,虽然b和c都是引用,但b+c不是引用,而是两个int的和,因此bc的类型也为int 2....返回类型后置 C++11新增加了一种函数声明的语法:在函数名和参数后面指定返回类型。...首先很容易想到的是将decltype(t+u)设置为该模板函数的返回值,但是不行的是,此时还未声明x和y,编译器还识别不到他们,更无法使用他们,因此,C++11新增了返回值类型后置的这种语法,针对上述的模板函数
这是乱码同意解决的代码, 直接在Spring配置统一指定,这样就不用每次都去处理了!... 返回...json字符串统一解决 一种是:在方法路 劲上加@ResponseBody,但是这样如果有很多方法都要返回json数据的话的话就每个都要加上@ResponseBody。...courseInfoVo); return R.ok().data("courseId", id); } } 另一种是:在类上直接使用 @RestController ,这样子,里面所有的方法都只会返回...方便于以后做前后端分离项目的时候要求统一返回json数据的时候用这个就很方便了,就没必要每个都加@ResponseBody @RestController @RequestMapping("/admin
接口的统一返回 在开发公司接口时,发现Controller层的接口返回都需要用一个Result包裹,如下图所示: 图示代码中无论是创建接口或者查询接口,这里都需要用一个Result去接收,我们来看看...还真有这样的方法,能实现Controller层接口的统一返回: 如上代码,我们使用ResponseBodyAdvice来拦截Controller层方法默认返回参数。说白了就是个拦截器。...注解,这里的value = Exception.class,表示我们捕捉Exception类型的异常。...自定义业务异常 我们定义一个业务异常,这里面封装了异常状态码,和异常信息数据。...这篇文章写到这里就结束了,本文主要讲解了: 如何实现接口统一返回 如何自定义业务异常,并被统一捕获 如何优雅的抛异常 如果还有改进的,欢迎大家积极交流。
,现在呆着的这家公司居然没有统一的API返回格式?...在仔细的阅读了项目源码后发现,在API请求的是居然没有业务异常(黑人问好)。好吧 居然入坑了只能遵照项目风格了,懒得吐槽了。...JSON格式了, 但是我们也发现了一个问题了,想要返回统一的JSON格式需要返回Result才可以, 我明明返回Object可以了, 为什么要重复劳动, 有没有解决方法, 当然是有的啦,...Object就可以统一JSON格式了, 就不用每个返回都返回Result对象了,直接让SpringMVC帮助我们进行统一的管理, 简直完美 只想看接口哦, helloError和helloMyError...是会直接抛出异常的接口,我好像没有对异常返回进行统一的处理哦 统一返回JSON格式进阶-异常处理(@ExceptionHandler)) 卧槽, 异常处理, 差点把这茬给忘了, 这个异常处理就有很多方法了
如果以后工作中遇到需要对接口的参数和返回值统一加密,说不定这个starter就可以派上用场,即使不使用这个starter,也可以参考一下别人是怎么对接口的数据进行统一加解密的。...(方便开发时测试) publicKey: xxxxxx privateKey: xxxxxx 0x04:对返回值进行加密 @Encrypt @GetMapping("/encryption...使用最多的是RSA和AES加解密,比对这两种加解密时有这样的一些经验 RSA如果对长数据加密需要使用分段加密,JS分段加解密非常麻烦 AES非常容易对长数据进行加密 RSA加解密 参考:https:/...cipher.init(Cipher.ENCRYPT_MODE, key); //8.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码...(encodeRules, content)); } } 项目中通常可以采取这样的规则进行加解密:使用非对称加密算法RSA对对称加密算法AES的密钥进行加密,然后使用对称加密算法AES对参数和返回的数据进行加解密
,进行一次统一的封装,即便接口发生异常。...比如,我们可以这样设计接口的返回: ? 统一数据返回 我们希望有一种统一的方式来处理异常,并且有一种统一的方式来对接口结果进行返回,并且尽可能少编写代码,尽可能和业务逻辑的处理分离开来。...第二步:定义统一处理handler ? GlobalResponseHandler ?...其次,通过实现ResponseBodyAdvice,对于数据的返回,进行进一步的处理,使得接口的返回值都是统一的对象。 ? 业务异常 运行结果 ? 接口正常返回 ? 正常返回的数据被统一包装 ?...异常返回 好了,到这里,咱们对springboot中的异常处理以及统一接口数据返回就有了一个认识~ 周末愉快~ create by zhangfengzhe 2018.09.02
除了上图,要注意三点:1、symbol是ES6中新增的数据类型 2.typeof(null)结果是Object 3.typeof(Object)和typeof(Array)的结果是...function,因为Object和Array本身就是内置函数。
题目部分 如何将数字格式化显示并且依然返回数值类型?