java前后端接口文档_前后端交互接口设计规范

130d884767b499eaa9e1f899bea0026a.png

在开发web应用的时候,往往会涉及到一个问题,前端后接口定义的问题。接口定义设计的好坏很大程度上能影响一个项目的进度和可扩展性。但是前辈们在这个问题上留下了非常宝贵的一些常规的设计思路,值得我们参考。

1、后端设计统一的返回模型

在与前端的交互过程中,我们最好统一一个通用的对象模型,避免一个接口返回一个模型,减少前端同学繁杂的工作量和沟通成本,类似如下:

04f3bb6356b5d06e70ceca8b507f7443.png

code为返回的编码,一般分为成功的编码和错误的编码,比如code=200为请求成功,非200为失败,在失败的情况下message有具体的失败信息,data是请求的真正的返回结果,比如我们要返回的是一个list的对象,就把data设置为list,这也是把data的类型设置为Object的缘由,因为在java中一切对象继承自Object。

在设计了通用的对象模型后,还涉及到另外一个问题,接口文档怎么写?且看我一一道来。

一般会在开头部分有个总体说明类似:

public class RestResponse {private int code; private String message; private Object data;}code为200为请求成功 非200即为异常,异常信息在message中,data为请求返回的数据Content-Type: application/json

然后是每个接口的详细信息,类似:

url: /punishInfo/updatePunishInfoHTTP请求方式:POST请求参数:public class UpdatePunishInfoRequest {private long id; //惩罚id private boolean active; //是否有效}返回对象:RestResponse

最后还有个附录部分介绍详细的错误码等信息,类似:

7efd05870736af57952e7ec94335c1c2.png

2、后端处理所有的异常信息,避免把异常抛到前台

你是不是曾经也遇到过访问一个web网站的时候,直接报什么exception,要是这exception暴露出你生产机器的数据库连接信息的话,你可能会被老板炒鱿鱼的。一般的做法是写一个@ControllerAdvice标记的controller,结合@ExceptionHandler统一处理运行时异常,然后返回给前端一个异常错误码和错误的详细信息。

3、善用一些开源的接口开源框架

说到写接口文档,有的时间我们可能新增或者修改文档,在修改代码的同时再去修改文档这是大多数程序员不想干的事情,Swagger框架帮我们解决了这个问题,具体怎么使用,如果大家有兴趣,下次可以再介绍。善用工具,事半功倍。

实现java多线程的几种方式

java 集合类(一)

java 集合类之List(二)

java集合类之Set(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015 多校第三场

1002 求max&#xff08;f(a),f(b)&#xff09;, f为不重复的素因子个数&#xff0c; 在数据要求以内 &#xff0c; 每个数最多有7个&#xff0c;可以打表。 1 /*Author :usedrose */2 /*Created Time :2015/7/29 11:32:09*/3 /*File Name :2.cpp*/4 #include <cstdio>5 …

java多线程必须掌握吗_多线程模式有什么作用(java多线程必须掌握的知识)

什么叫多进程&#xff1f;在预估中&#xff0c;过程是已经实行的计算机语言的一个案例。或是简易地说&#xff0c;运作程序流程也称之为过程。多进程代表着“在单独计算机软件中具备2个或更好几个CPU。比如&#xff0c;假如计算机软件具备双核四线程&#xff0c;而且另外运作(实…

java配置irport,一个production模式下的Ror环境搭建-airport -JavaEye技术社区

比较了一些ROR的生产环境&#xff0c;经过测试&#xff0c;还是选用了mongrelapache的方式。1.download安装包:httpd-2.2.3.tar.gz ,apache服务器ruby-1.8.5.tar.gzrubygems-0.9.0.tgzmongrel-0.3.13.4.gem2.安装rubytar zxvf ruby-1.8.5.tar.gz./configuremakemake install3.安…

php ?redis,PHP使用Redis存储Session

对于大访问量的网站来说&#xff0c;会有许多的客户端和服务端建立链接&#xff0c;就会生成许多 Session 文件&#xff0c;由于 Session 文件是存储在硬盘上的&#xff0c;因此每次服务器去读取这些 Session 文件都要经过许多的 I/O 操作。PHP 中可使用 session_set_save_hand…

微信支付现金红包接口(转)

微信支付现金红包接口正式开放&#xff0c;只需开通微信支付&#xff0c;即可接入现金红包。通过现金红包接口&#xff0c;公众号开发者可以策划相关运营活动&#xff0c;向用户发放微信支付现金红包&#xff0c;更好的达到品牌推广及回馈用户的效果。具体能力如下&#xff1a;…

php 打印对象到文件,php实现将数组或对象写入到文件的方法小结【三种方法】...

本文实例讲述了php实现将数组或对象写入到文件的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;php将数组或对象原样写入或保存到文件有三种方法可以实现第一种方法是使用serialize&#xff0c;第二种方法是使用print_r&#xff0c;第三种方法是使用var_export&a…

The return types for the following stored procedures could not be detected

1、使用dbml映射数据库&#xff0c;添加存储过程到dbml文件时报错。 2、原因&#xff1a;存储过程中使用了临时表 3、解决方案 3.1 通过自定义表值变量实现 Ex: DECLARE TempTable TABLE ( AttributeID INT, Value NVARCHAR(200) ) INSERT INTO TempTable Select * from Attrib…

webstock php,workerman_connection

workerman_connection 测试WebStock 功能Description整理PHP 实现webstock 功能的相关流程。感谢workerman 开发作者提供开源组件。安装 composer# curl -sS https://getcomposer.org/installer | php如果安装 composer 提示PHP 版本不够按照如下处理&#xff0c;否则跳过。提示…

短信通信的几种情况和CMS错误

1&#xff0e; 如何与GSM MODEM建立通信联系 2&#xff0e; 不能与GSM MODEM进行正常的通信或总是在仿真终端上出现乱码 3&#xff0e; 如何才能知道错误代码 4&#xff0e; 发送短消息后&#xff0c;收到出错信息CMS ERROR 512 5&#xff0e; 发送短消息后&#xff0c;收到出错…

php+管道+pipe管道,angular2+管道pipe

一.什么是Pipe?就是管道&#xff0c;简单来说&#xff0c;管道的作用就是传输。并且不同的管道具有不同的作用。(其实就是处理数据)二.pipe用法{{ 输入数据 | 管道 : 管道参数}} (其中‘|’是管道操作符)三.Angular自带的pipe函数管道功能DatePipe 日期管道&#xff0c;格式…

[字符串]与[数组]的互相转换

1.字符串转换为数组 var a"1,2,3";var ba.split(,); 2.数组转换为字符串 var c[1,2,3];var dc.join(,); 转载于:https://www.cnblogs.com/zqzjs/p/4693849.html

java android 界面设计,Android精美登录界面设计

在网上在到一个登录界面感觉挺不错的&#xff0c;给大家分享一下~先看效果图&#xff1a;这个Demo除了按钮、小猫和Logo是图片素材之外&#xff0c;其余的UI都是通过代码实现的。一、背景背景蓝色渐变&#xff0c;是通过一个xml文件来设置的。代码如下&#xff1a;background_l…

linux查看文件大小

du -s [文件名] du -sh [文件名] ls -lh [文件名]转载于:https://www.cnblogs.com/chenqionghe/p/4694070.html

jmeter java接口,jmeter并发测试java接口 | 学步园

Sample这里我用到主要JMeter的线程和报表&#xff0c;扩展了他的“Java请求”这个应用类别。要扩展此应用&#xff0c;要用到lib/ext/ApacheJMeter_java.jar,他封装此应用。首先&#xff0c;需要继承ApacheJMeter_java.jar中的抽象类AbstractJavaSamplerClient&#xff0c;它提…

Web项目练习总结(错误校正篇)

老师布置任务&#xff0c;从SVN上弄个项目来练练手&#xff0c;熟悉下过程。 myeclipse安装SVN 然后把MobileManageSys下下来 然后漫长的等待。。。 然后配置数据库&#xff0c;导入&#xff0c;这里用的是SQLyog&#xff0c;其他的也可以 之后这里会产生一大堆的错误&#xff…

php 网格,PHP中的数据网格

你可以使用http://phpgrid.com$dg new C_DataGrid("SELECT * FROM orders", "orderNumber", "orders");// change column titles$dg->set_col_title("orderNumber", "Order No.");$dg->set_col_title("orderDat…

matlab常用隶属度函数,常用隶属函数.ppt

模糊集基本理论 典型隶属函数 如前所述, 构造恰当的隶属函数是模糊集理论应用的基础。一种基本的构造隶属函数的方法是“参考函数法”, 即参考一些典型的隶属函数, 通过选择适当的参数, 或通过拟合、整合、实验等手段得到需要的隶属函数。 下面介绍典型隶属函数(最早由法国学者…

适配器模式的应用

1.适配源类&#xff1a;java.util.Properties 2.适配目标类&#xff1a;FileIO 3.适配器 FileProperties package fileio;import java.io.IOException;public interface FileIO {public void readFromFile(String fileName) throws IOException;public void writeToFile(String…

nginx php7提速,nginx+php7-fpm 性能提升几倍跟踪实践结果并优化

nginxphp7-fpm 性能提升几倍跟踪实践结果并优化nginxphp7-fpm 性能提升几倍&#xff0c;跟踪实践结果并优化历史ubuntu服务器使用的apachephp5&#xff0c;现在使用nginuxphp7-fpm方式&#xff0c;看效果图&#xff0c;啥也不说了。强烈推荐升级到php7&#xff0c;当然升级中基…

Where条件的in里面放太多数据导致很慢

比如&#xff1a;select * from TableA where ID in (42,216,219,230,231,220,249,250,221,251,252,217,253,255,256,254,257,258,1804) 52W数据&#xff0c;查询速度19386ms&#xff0c;好慢怎么办&#xff1f;程序都卡死了。 那么试一下百度搜索到的优化方式&#xff1f; 1.将…