搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 杨建荣的学习笔记 > 前后端分离的流程设计

前后端分离的流程设计

杨建荣的学习笔记 2018-07-01

    之前自己分享过一版前后端分离的开发流程。


    这里需要提两个概念,一个是本地前端,另外一个是平台前端,本地前端是在内部迭代使用,界面可以简单一些,功能为主;平台前端是一个具有全局规划性的前端技术,简单来说,这是专业前端,会考虑用户体验度等等。

    我们要做一件事情,首先这件事情得能做成,然后把这件事情能做好。本地前端是保证这件事情能做成,而平台前端是保证这件事情能做好(至少看起来好)。为了保证表里合一,那么我们需要的就是核心的逻辑是同一套。

    所以提出这个概念之后,自己也在内部做了迭代和尝试,当然这个过程中也逐步的克服了一些技术恐惧的边界问题。其实回过头来看,事情似乎没想的那么痛苦。

    我使用的是Django的基础框架,其实对于我来说,对于ORM的部分功能还是很认可的。但是使用了RESTful服务之后,其实很多逻辑可以上移到API层来做。比较理想的状况就是Django的view层不用做逻辑处理,只是做页面的跳转的form data的跳转等。

    在这种情况下,后续如果要集成更加纯粹的前后端分离框架,其实就是水到渠成的事情了。

    比如对于防火墙的处理,iptables_show和iptables_add的操作,目前在view层已经没有实际的业务逻辑了。

def iptables_show(request):
return_dict = {}

src_ip = request.GET.get('src_ip', None)
if src_ip == None:
return return_response(request, 'iptables_manage/iptables_query.html', return_dict)
open_port = request.GET.get('open_port_list')
url = LOCAL_SERVER_URL+'/api/iptables_list/?src_ip='+src_ip+'&open_port_list='+open_port

result = api_access(url,'GET',request.user.id)
return_dict['result'] = result

return return_response(request, 'iptables_manage/iptables_query.html', return_dict)

def iptables_add(request):
return_dict = {}
if request.method == "GET":
return return_response(request, 'iptables_manage/iptables_manage.html', return_dict)
url = LOCAL_SERVER_URL+'/api/iptables_add'
   data = request.POST
result = api_access(url,'POST',request.user.id,data)
print(result)
return_dict['result'] = result

return return_response(request, 'iptables_manage/iptables_manage.html', return_dict)

    这样一来,就可以对view层再做一层抽象,对前端的url可以做瘦身和精简,比如通过前端页面来配置API即可。

    整个逻辑的实现,其实下面的部分是难点,比如Django中的view层的url为:iptables_show,那么在API层使用RESTful服务的时候,需要再配置一个url为:api/iptables_show,然后两个url之间的关联关系从程序调用来说,是没有程序层面的依赖的,是一种绝对的隔离,核心仅在于API的url部分。我们完全是把服务以API的形式来调用,这样后续接入平台前端的时候,就很容易了。毕竟本地前端已经验证过功能了。

def getresponse_Token(url, token, api_method,data=None):
headers = {"Authorization": "Token %s" % token}
ss = requests.Session()
if api_method == 'GET':
r = ss.get(url, headers=headers, verify=False)
elif api_method == 'POST':
r = ss.post(url, headers=headers, data=data,verify=False)
elif api_method =='PUT':
r = ss.put(url, headers=headers, data=data,verify=False)
res = json.loads(r.text)
return res


def api_access(url_str,api_method,user_id,data=None):
if url_str == None:
return ''

   if url_str != LOCAL_SERVER_URL+'/api':
api_method = api_method
user_id = user_id
token = Token.objects.filter(user_id=user_id)

rs = getresponse_Token(url_str, token[0],api_method,data)
return rs



爱情保卫战:保卫你的爱情(印刷签名本)

当当 广告
购买


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《前后端分离的流程设计》的版权归原作者「杨建荣的学习笔记」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注杨建荣的学习笔记微信公众号

杨建荣的学习笔记微信公众号:jianrong-notes

杨建荣的学习笔记

手机扫描上方二维码即可关注杨建荣的学习笔记微信公众号

杨建荣的学习笔记最新文章

精品公众号随机推荐

上一篇 >>

Netty笔记(一)