本篇文章给大家谈谈前后端分离接口设计,以及前后端分离接口规范对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享前后端分离接口设计的知识,其中也会对前后端分离接口规范进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
前后端分离系统接口设计思路
直接进入正题,总得分为两块,一块是表结构,另一块为实现思路(仅供参考)
一、 表结构
1、 菜单表(right)
字段 类型 注释
id long 主键
name varchar 名称
url varchar 地址
ico varchar 图标
tips varchar 提示信息
parentId long 上级菜单Id
level int 级别:1-3为菜单,4为按钮,5为接口
sort int 排序
2、 角色表(role)
字段 类型 注释
id long 主键
name varchar 名称
desc varchar 描述
code varchar 编码
sort int 排序
3、 角色菜单表(role_right)
字段 类型 注释
id long 主键
roleId long 角色ID
rightId long 菜单ID
4、 用户表(user)
字段 类型 注释
id long 主键
name varchar 姓名
account varchar 账号
password varchar 密码
5、 用户角色表(user_role)
字段 类型 注释
id long 主键
userId long 用户Id
roleId long 角色Id
5、 用户登陆记录表(login_token),过期时间由系统检测
字段 类型 注释
id long 主键
date date 登陆日期
token varchar token
userId long 用户Id
二、 实现思路
1、前端
用户登录,返回token;
根据token查询用户菜单信息,并返回json数据,存入客户端;
根据菜单数据,动态显示菜单,按钮
前端跳转页面,需要在路由中加入前端拦截,读取本地权限数据进行匹配
用户访问接口,后端进行校验
2、后端
编写拦截器,拦截所有url,过滤掉特殊不需要拦截的url;
获取请求中的接口地址,不包含参数;
获取当前请求token,查询用户角色;
根据角色查询所有的接口,拿当前请求的接口进行比对,存在则放行,不存在,则返回错误信息
以上仅为个人设计思路,如有不好的地方,欢迎指正。
前后端分离微服务架构如何设计
前端
前端开发人员专注业务的页面呈现,非常注重用户体验度,也是与各种角色打交道最多的。
比如:
一般前端工作包括六个部分:
后端
如果前后端职责划分很清楚的话,后端更多开发工作在于业务接口设计、业务逻辑处理以及数据的持久化存储,并提供详细的接口设计文档给前端开发人员使用。
一般后端工作包括五个部分:
1、与产品经理对接需求
2、业务 API 接口开发:根据根据需求文档进行业务接口开发
4、接口对接:与前端开发人员接口对接
5、前后端联调测试:包括页面展示以及接口数据
6、bug修复
前端开发技术栈
h5 、 css 、 nodejs / vue / angular / react 、 webpack 、 hbuilder / vscode 等
后端开发技术栈
SpringCloud / Springboot 、 SpringMVC 、 ORM 框架、数据库、缓存框架( Redis , Codis , Memcached 等),大数据框架( Hadoop / Spark / hive / Hbase / Storm / ES / Kafka )等等
技术选型
最好选择成熟稳定,易上手、开发效率高的技术,因为实际项目开发时间是有限的,开发人员没有多少精力放在学习和深度研究技术上。
数据格式
后端开发提供接口设计文档,详细写明每个接口的请求地址、请求参数、响应参数等等;一般采用 REST 风格以 JSON 格式提供数据。
接口设计
一个接口设计的好坏,直接影响到前后端的一些沟通协调问题。
依笔者的经验来看,如果后端接口不稳定,会导致前端开发人员反复修改页面数据呈现。常常出现后端开发说这是前端问题,前端开发说是后端问题,来回扯皮,沟通效率低下。
接口容量问题
一个接口的业务容量大小,往往代表前后端工作量的大小。
如果一个接口的业务容量太小,前端需要分阶段处理的事情就多,尤其是对多个接口 Ajax 异步处理;
如果一个接口的业务容量太大,那么业务耦合性高,万一需求变更,后端程序改动大,不利于程序的扩展。
一、前后端分离的思想要转变
不能老是按照传统WEB( js/h5/css/ 后端代码放在一个工程)开发思维去看待前后端分离
二、沟通成本问题
以前传统 WEB 开发,开发人员从需求到设计到开发基本上是一个人。
而前后端分离后,前端只负责页面呈现,后端更注重业务逻辑处理以及数据的持久化,双发都有自己的侧重点,工作量上有私心。
三、组织结构问题
康威定律
第一定律: Communication dictates design (组织沟通方式会通过系统设计表达出来)
第二定律: There is never enough time to do something right, but there is always enough time to do it over (时间再多一件事情也不可能做得美,但总有时间做完一件事情)
第三定律 : There is a homomorphism from the linear graph of a system to the linear graph of its design organization (线型系统和线型组织架构间有潜在的异质同态特性)
第四定律: The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems (大的系统组织总是比小系统更倾向于分解)
康威定律说明以下几点
四、部署及监控运维
前后端分离后,拆分的服务会带来线上部署以及如何监控运维的复杂性。
总体来说,前后分离所带来的好处还是更明显的。一个成熟的前后端分离的团队,文档化约定,前后端职责分离、接口约定都是做得比较好的
对前后端分离设计模式的理解总结(部分Django描述)
FBV:Function base view 基于方法的视图
CBV:Class base view 基于类的视图
所以之后我了解到,其实是我没有了解 FBV 与 CBV 的概念。
正所谓:类就是 把数据封装进对象里 ,并赋予对象 行为 的能力。
所以我们完全可以把一个需求的接口封装成为一个类:
因为继承了 django 的 View 类,所以在默认情况下,会自动根据请求类型映射该类中对应的请求方法。
但是在所有的 python web 框架乃至一些其他语言的框架之中,对 HTTP 请求类型的方法映射都是由一个专门的反射函数来实现的 。
所以, 总结如下:
另外值得一提的是:自己那个类中的 dispatch 方法中如果不自己去映射而是调用父类(django 的 View)的 dispatch 方法,另外还在前后做一些附加操作,这样的功能跟 “ 装饰器 ” 就很相似了。
一共有10个项目,那让我们一起来慢慢学习吧!
300 系列:重定向类
400 系列 :客户端错误
500 系列: 服务端错误
如何处理好前后端分离的 API 问题
意义很大,但是你的问题本身认识有偏差。
对于前后端分离,认识上有个误区,那就是很多人自称:老早就分离了,全AJAX,使用Angular或者什么什么就可以了。
这个说法是不合适的,打个比方,别人问的是“如何解决家禽把蛋生在水草边的问题?”,但实际上人家养的是鸭子,答题的却是养鸡的,所以回答“不让去水边就行了”,这显然不在点子上。
这两年业界说的前后端分离,是限于偏展示类的系统(用A代替),而不是应用、管控类Web项目(用B代替),在B类项目里,前后端是天然分离的,对此,除了少部分后端开发人员,基本所有人的认识都是一致的。上一段中这样回答的人一般都是只做B类项目,在B类项目里,前后端分离是共识,不需要讨论。
那么,剩下的问题就是讨论A类项目的前后端分离了。这个问题的核心在什么地方呢,在于模板的与数据结合的位置,以及,模板的控制权在谁手里。经过这两年的讨论,基本上我们可以达成的共识就是:模板应当由前端人员去控制,主要原因有两方面:
- 性能优化(尤其是外部资源的管理与发布,请求合并等等)
- 协作的顺畅性(已形成模板的界面片段的返工等问题)
那么,模板到底应该在什么地方跟数据结合?
这个问题就比较折腾了,有部分人尝试像B类项目那样,使用js模板,然后在浏览器端执行,这是存在一些问题的,比如说seo不友好,首屏性能不够,尤其对于首页DOM量很大的电商类网站,差距很明显。
所以还是得把主要的模板放在服务端来执行。在这个过程中,阿里作了一些尝试,那就是引入Node层,在这一层把模板与数据进行合成,然后浏览器拿到的就是生成好的HTML了,但也不是所有HTML都是这么生成好的,还是会有一些内容等到了浏览器之后,再用js去加载和生成。
前后端分离,关于接口文档,后端是要先写好接口文档,再进行写代码开发,还是写完代码后再编写接口文档?
1、先理清业务流程
2、定义前后端开发的接口规范。比如json的格式,url的格式
3、定义接口文档,这里的接口文档一般就是对应后台的实体reqVo(调用后台接口<控制器访问的实体)和返回给前台的respVo(前台调用接口的返回的实体)。注意一般respVo都会有在后台做一个统一的处理为ResultVo(这个规范在2中要定义好,比如:错误码,错误描述,请求的url,请求时间,以及实体T<这个实体才是真正的respVo和业务相关,这个一般都是实体)
4、定义接口文档是在了解业务流、数据流基础之上完成的。有了这个接口文档(其实就是定义实体的过程和对应的json)前后端的开发基本按照这个文档去开发。接口文档会有版本迭代,一般放到svn上,供所有开发人员阅览
5、现在一般系统用到的数据库都不会是单纯mysql了。还有redis,mongo、es等。这些个人感觉都是在十分了解业务的情况和系统架构下去设计的。后台运用这些工具去完成接口功能的实现已经系统功能和性能的实现。这个和接口文档先后顺序还真不好说,个人觉得都可以。
6、业务流-数据流-资金流。去了解和设计系统。
VB.Net 前后端分离怎么实现的
1.一般来说,要实现前后端分离,前端就需要开启一个本地的服务器来运行自己的前端代码,以此来模拟真实的线上环境,并且,也是为了更好的开发。因为你在实际开发中,你不可能要求每一个前端都去搭建一个java(php)环境,并且在java环境下开发,这对于前端来说,学习成本太高了。
?2.但如果本地没有开启服务器的话,不仅无法模拟线上的环境,而且还面临到了跨域的问题,因为你如果写静态的html页面,直接在文件目录下打开的话,你是无法发出ajax请求的(浏览器跨域的限制),因此,你需要在本地运行一个服务器,可是又不想搭建陌生而庞大的java环境,怎么办法呢?nodejs正好解决了这个问题。在我们项目中,我们利用nodejs的express框架来开启一个本地的服务器,然后利用nodejs的一个http-proxy-middleware插件将客户端发往nodejs的请求转发给真正的服务器,让nodejs作为一个中间层。这样,前端就可以无忧无虑的开发了
?3.由于前后端分离后,前端和后台同时开发时,就可能遇到前端已经开发好一个页面了,可是却等待后台API接口的情况。比如说A是负责前端,B是负责后台,A可能用了一周做好了基本的结构,并且需要API接口联调后,才能继续开发,
?4.而此时B却还没有实现好所需要的接口,这种情况,怎么办呢?在我们这个项目里,我们是通过了mock来提供一些假数据,我们先规定好了API接口,设计出了一套API文档,然后我们就可以通过API文档,利用mock来返回一些假数据,这样就可以模拟发送API到接受响应的整一个过程,
?5.因此前端也不需要依赖于后端开发了,可以独立开发,等到后台的API全部设计完之后,就可以比较快速的联调。
关于前后端分离接口设计和前后端分离接口规范的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
前后端分离接口设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于前后端分离接口规范、前后端分离接口设计的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~