本发明涉及数据处理领域,具体涉及一种前后端分离的接口实现方法及装置。
背景技术:
laravel是一套简洁、优雅的phpweb开发框架(phpwebframework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络app,而且每行代码都可以简洁、富于表达力。
在laravel中已经具有了一套高级的phpactiverecord实现--eloquentorm。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到activerecord的所有便利。eloquent原生支持fluent中查询构造器(query-builder)的所有方法,同时利用注入依赖的原理使得可以集成大量的第三方库。
然而,使用这个框架的需要懂得很多设计模式,学习成本很大,同时由于包含了太多的依赖关系,导致整个框架变多很大,同时在响应(qps)变得很慢,部署麻烦,对于前后端分离项目太过臃肿。
技术实现要素:
本发明实施例提供一种前后端分离的接口实现方法及装置,通过前后端分离的模式,前端和后端分工明确,前端使用的是异步请求的方式访问后端接口,后端只需要关系提供的接口数据正确,不需要关心前端的代码,更加专注的输出数据。
一方面,本发明实施例提供了一种前后端分离的接口实现方法,所述方法包括:
在接口的输入端,对输入的请求数据中每个请求参数的数据类型进行限定,并对需要进行用户验证的接口设置用户验证;
在接口的输出端,对所述请求数据对应的返回数据添加时间戳字段以及接口版本号字段,并使用预先设定的数据层data文件对所述返回数据进行数据过滤,若所述返回数据的数据变量为data文件中已声明的数据变量,则返回所述返回数据。
另一方面,本发明实施例提供了一种前后端分离的接口实现装置,所述装置包括:
输入单元,设置在接口的输入端,用于对输入的请求数据中每个请求参数的数据类型进行限定,并对需要进行用户验证的接口设置用户验证;
输出单元,设置在接口的输出端,用于对所述请求数据对应的返回数据添加时间戳字段以及接口版本号字段,并使用预先设定的数据层data文件对所述返回数据进行数据过滤,若所述返回数据的数据变量为data文件中已声明的数据变量,则返回所述返回数据。
上述技术方案具有如下有益效果:
根据本申请的技术方案,通过前后端分离的模式,前端和后端分工明确,前端使用的是异步请求的方式访问后端接口,后端只需要关系提供的接口数据正确,不需要关心前端的代码,更加专注的输出数据。同时,每个接口用户输入的参数都会进行数据类型的约束,同时针对需要验证的接口,开启验证开关,保证系统的安全性;输出端通过data文件过滤,保证了系统输出的安全性与可靠性;本系统完全轻量级,部署及其简单,同时学习曲线极低,由于系统的轻便,qps可以达到很高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一前后端分离的接口实现方法的流程图;
图2是本发明实施例一前后端分离的接口实现装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
缩略语和关键术语定义
api:(applicationprogramminginterface,应用程序接口)。指软件系统不同组成部分衔接的约定,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力
web框架:web应用框架(webapplicationframework)是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发。其类型有基于请求的和基于组件的两种框架
协议:为进行网络中的数据交换而建立的规则、标准或约定。
json:是一种轻量级的数据交换格式。
jwt:jsonwebtoken(jwt)是目前最流行的跨域身份验证解决方案
如图1所示,本发明提供的一种前后端分离的接口实现方法,包括:
101、在接口的输入端,对输入的请求数据中每个请求参数的数据类型进行限定,并对需要进行用户验证的接口设置用户验证。
优选地,预先设置注入依赖的容器,在所述容器中声明在数据输入、输出过程中需要加载的模块,在模块加载时,通过模块路径追踪的方法进行路由匹配;即根据控制器controller/文件class/模块method的方法进行路由匹配;以及,所述需要加载的模块中包括在满足预设条件时加载的中间插件,所述中间插件包括数据库以及log模块。
本发明采取的是注入依赖模式去实现各个模块的加载,注入依赖需要一个容器,容器中声明需要加载的模块,在项目启动时进行加载。考虑到加载时候的效率,本发明并没有采用正则的方式去匹配路由,而是有头部开始进行匹配,根据controller/class/method的方法进行匹配,相比于正则,这样节省了大量的时间,提高了效率。
进一步优选地,通过设置规则函数限定所述每个请求参数的数据类型以及限定是否需要进行用户验证。对用户输入的强约束,在用户请求的时候,每一个参数都会进行约束,由于php的数据类型约束不强,导致用户输入的数据严谨性下降,针对于此,每个接口用户输入的参数都会进行数据类型的约束,同时针对需要验证的接口,开启验证开关,用户只有输入正确的token才能访问api,保证系统的安全性。在每个controller中,使用者可以制定一个规则的函数,规则函数的主要作用是制定本controller中的限制条件,例如所接受的请求方法是post或者是get,所接受的请求参数的数据类型,是否为必须,该请求是否需要提供可验证的token,以确保用户的身份。
进一步优选地,对于需要进行用户验证的接口,通过接入跨领域身份验证规范jwt系统设置用户验证。本发明鉴于针对前后端分离项目,采取无状态的token方式,解决了向后端分离项目中用户状态问题和项目跨区等问题。
102、在接口的输出端,对所述请求数据对应的返回数据添加时间戳字段以及接口版本号字段,并使用预先设定的数据层data文件对所述返回数据进行数据过滤,若所述返回数据的数据变量为data文件中已声明的数据变量,则返回所述返回数据。
本发明中加入data的概念,针对接口所需要返回的数据进行过滤,只有在data文件中声明的数据变量才会输出,保证了系统输出的安全性与可靠性。
优选地,所述返回数据以json字符串的形式进行输出返回。用户只需要定义好输出的状态码和数据,输出模块自动加上时间戳,api版本号等内容以json字符串的形式输出。
优选地,通过设置配置模块,在配置模块中,用户可以配置各类框架参数。
如图2所示,对应于上述方法,本发明提供的一种前后端分离的接口实现装置,包括:
输入单元21,设置在接口的输入端,用于对输入的请求数据中每个请求参数的数据类型进行限定,并对需要进行用户验证的接口设置用户验证;
输出单元22,设置在接口的输出端,用于对所述请求数据对应的返回数据添加时间戳字段以及接口版本号字段,并使用预先设定的数据层data文件对所述返回数据进行数据过滤,若所述返回数据的数据变量为data文件中已声明的数据变量,则返回所述返回数据。
进一步地,还包括加载单元,用于预先设置注入依赖的容器,在所述容器中声明在数据输入、输出过程中需要加载的模块,在模块加载时,通过模块路径追踪的方法进行路由匹配;
以及,所述需要加载的模块中包括在满足预设条件时加载的中间插件,所述中间插件包括数据库以及log模块。
进一步地,所述输入单元具体用于:通过设置规则函数限定所述每个请求参数的数据类型以及限定是否需要进行用户验证。
进一步地,所述输入单元具体还用于:对于需要进行用户验证的接口,通过接入跨领域身份验证规范jwt系统设置用户验证。
进一步地,所述输出单元还用于:将所述返回数据以json字符串的形式进行输出返回。
应用举例如下:
容器模块,在其中我们声明了实例,在实例中我们绑定了配置模块,请求模块,输出模块,数据类模块以及数据库模块,这样在框架运行的时候保证了以上模块的运行:
规则制定:例如设置index方法接受的方法为post和get,同时需要的请求参数是name和password,同时设定name为int类型且必须,password为string类型且必须,同时这个api接口'authentication'为false,不需要验证:
中间件模块加载,每个controller中可以按需加载中间件,例如如下加载一个默认的数据库,按需加载保证了框架启动时候的效率:
protected$middleware=array('database'=>array());
获取请求值,因为设定的rule中已经有参数的设定,所以我们获取的方法只需要知道参数名即可通过上下文获取参数值,如果想获取其他参数,可以通过$this->input->data数组中获取:
$name=$this->name;//获取再rule中声明的参数值
$name=$this->input->data['name'];//获取其他值
用户验证,如果用户选择验证,通过集成jwt库进行验证
采用了本发明的框架,开发人员更加专注于后端api的设计,有更严谨的输入参数,更友好的输出,集成无状态的token进行用户验证,更好的针对移动端和前后端分离,本框架结构简单,学习曲线极低。
通过注入依赖模式去实现各个模块的加载,高效的路由加载效率,前后端分离项目用户身份认证解决方案(jwt);能根据接口设置对应的接口规则,是项目更加严谨高效;框架轻量,学习曲线小。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrativelogicalblock),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrativecomponents),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
1.一种前后端分离的接口实现方法,其特征在于,所述方法包括:
在接口的输入端,对输入的请求数据中每个请求参数的数据类型进行限定,并对需要进行用户验证的接口设置用户验证;
在接口的输出端,对所述请求数据对应的返回数据添加时间戳字段以及接口版本号字段,并使用预先设定的数据层data文件对所述返回数据进行数据过滤,若所述返回数据的数据变量为data文件中已声明的数据变量,则返回所述返回数据。
2.根据权利要求1所述的一种前后端分离的接口实现方法,预先设置注入依赖的容器,在所述容器中声明数据输入、输出过程中需要加载的模块,其特征在于,在模块加载时,通过模块路径追踪的方法进行路由匹配;
以及,所述需要加载的模块中包括在满足预设条件时加载的中间插件,所述中间插件包括数据库以及log模块。
3.根据权利要求2所述的一种前后端分离的接口实现方法,其特征在于,通过设置规则函数限定所述每个请求参数的数据类型以及限定是否需要进行用户验证。
4.根据权利要求3所述的一种前后端分离的接口实现方法,其特征在于,对于需要进行用户验证的接口,通过接入跨领域身份验证规范jwt系统设置用户验证。
5.根据权利要求1-4之一所述的一种前后端分离的接口实现方法,其特征在于,所述返回数据以json字符串的形式进行返回。
6.一种前后端分离的接口实现装置,其特征在于,所述装置包括:
输入单元,设置在接口的输入端,用于对输入的请求数据中每个请求参数的数据类型进行限定,并对需要进行用户验证的接口设置用户验证;
输出单元,设置在接口的输出端,用于对所述请求数据对应的返回数据添加时间戳字段以及接口版本号字段,并使用预先设定的数据层data文件对所述返回数据进行数据过滤,若所述返回数据的数据变量为data文件中已声明的数据变量,则返回所述返回数据。
7.根据权利要求6所述的一种前后端分离的接口实现装置,还包括加载单元,用于预先设置注入依赖的容器,在所述容器中声明在数据输入、输出过程中需要加载的模块,其特征在于,在模块加载时,通过模块路径追踪的方法进行路由匹配;
以及,所述需要加载的模块中包括在满足预设条件时加载的中间插件,所述中间插件包括数据库以及log模块。
8.根据权利要求7所述的一种前后端分离的接口实现装置,其特征在于,所述输入单元具体用于:通过设置规则函数限定所述每个请求参数的数据类型以及限定是否需要进行用户验证。
9.根据权利要求8所述的一种前后端分离的接口实现装置,其特征在于,所述输入单元具体还用于:对于需要进行用户验证的接口,通过接入跨领域身份验证规范jwt系统设置用户验证。
10.根据权利要求6-9之一所述的一种前后端分离的接口实现装置,其特征在于,所述输出单元还用于:将所述返回数据以json字符串的形式进行输出返回。
技术总结