CN104639603B - 一种基于Spring MVC的RESTful服务设计方法 - Google Patents
一种基于Spring MVC的RESTful服务设计方法 Download PDFInfo
- Publication number
- CN104639603B CN104639603B CN201410690475.8A CN201410690475A CN104639603B CN 104639603 B CN104639603 B CN 104639603B CN 201410690475 A CN201410690475 A CN 201410690475A CN 104639603 B CN104639603 B CN 104639603B
- Authority
- CN
- China
- Prior art keywords
- service
- interface
- parameter
- request
- safety
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明属于网络服务设计领域,尤其是涉及一种基于Spring MVC的RESTful服务设计方法。本发明针对现有技术存在的问题,提供一种基于Spring MVC的RESTful服务设计方法,该方法通过RESTful请求模型使得每中服务都能通过唯一的URL进行定义与调用,使得开发者可以自由地随时随地访问服务而无需复杂的外部程序依赖,让服务接口清晰,服务调用方便,降低开发者理解服务的难度。本发明通过接口Façade进行预处理,通过服务定义配置文件定义各种服务,并通过服务处理中心完成服务的注册初始化,通过安全控制模块检测后,接口代理模块发起调用,并将响应处理模块将结果返回给客户端等步骤实现。
Description
技术领域
本发明属于网络服务设计领域,尤其是涉及一种基于Spring MVC的RESTful服务设计方法。
背景技术
随着互联网的发现,各开发平台为开发者提供了诸如数据分析、社交渠道与关系链、广告联盟、云托管、支付结算等能力接口,以完善及提升开发者的运营及管理能力。有些开发平台为开发者提供了数个扶植体系,如新品孵化、应用成长扶持等。
传统Web Service, SOAP(Simple Object Access Protocol)请求模型的基本上都是使用HTTP传输协议进行交互的,采用SOAP请求,任何服务都对应一组SOAP请求/响应报文,服务的调用及报文解析都比较麻烦。不管调用的接口与参数复杂与否,SOAP调用也必须将其封装成一个复杂的SOAP报文才行。一般情况下,不得不借助CXF、Axis这类框架来访问SOAP的Web Service。
发明内容
本发明的目的在于:针对现有技术存在的问题,提供一种基于Spring MVC的RESTful服务设计方法,该方法通过RESTful(Representational State Transfer)请求模型使得每中服务都能通过唯一的URL进行定义与调用,使得开发者可以自由地随时随地访问服务而无需复杂的外部程序依赖,让服务接口清晰,服务调用方便,降低开发者理解服务的难度。
本发明目的通过下述技术方案来实现:
一种基于Spring MVC的RESTful服务设计方法包括:
步骤1:用户向服务器提供的统一接口Facade(所有调用接口的服务门面)发起服务请求,执行步骤2。
步骤2:服务器接口Facade接受服务请求,并通过服务接口对该请求进行统一的预处理,转入服务定义配置文件,获取组件的相应注册信息,执行步骤3。
步骤3:根据服务定义配置文件中Schema命名空间对该服务定义并转入服务处理中心,执行步骤4。
步骤4:服务处理中心根据注册信息,封装应用上下文,形成统一的请求数据结构,该服务完成注册初始化,并对该服务进行路由派发,即发送到安全控制模块,执行步骤5;
步骤5:启用安全控制模块检查调用的服务是否存在,用户请求是否超过规定的限制,用户是否有调用该服务的权限,确保数据的完整性和安全性;安全控制模块验证结果返回给服务处理中心,执行步骤6;否则,返回错误的响应信息。
步骤6:服务处理中心将安全验证的封装结果转入接口反射代理模块,执行步骤7。
步骤7:对于步骤5验证结果进行统一的日志审计记录,若安全验证未通过的,直接返回,转入响应处理步骤8;若安全验证通过且可以正常调用服务的,通过步骤6中的接口反射代理模块调用相应的模块对该服务进行处理,将结果和响应封装后返回接口代理组件;
步骤8:将接口反射代理模块的处理结果,统一转到响应处理模块;
步骤9:响应处理模块根据请求参数定义的返回格式,对响应内容进行相应的编码及格式转换,返回给客户端。
进一步的,所述步骤2通过服务接口对该请求进行统一预处理的具体过程是:
1)根据服务器接口请求参数,提取其中的系统参数和用户参数,拼接成参数字符串,进行参数剖析;
2)对字符串进行签名运算认证,生成签名标识,附加在请求参数前,对服务器接口请求进行封装;
3)转入服务定义配置文件,获取组件的相应注册信息。
所述步骤3中服务定义配置文件通过Schema命名空间对该服务进行定义具体过程是:通过继承SPRING的命名空间,扩展出自定义的配置文件,注册到SPRING容器当中,当SPRING容器启动的时候,自动会加载这些服务配置文件,通过依赖注入和自动扫描实现组件的初始化。
进一步的,所述步骤5中启用安全控制模块检查调用的服务是否存在,用户请求是否超过规定的限制,用户是否有调用该服务的权限,确保数据的完整性和安全性具体步骤包括:
步骤51:安全控制模块检查参数与签名,确保传入参数是合法并未篡改的;
步骤52:安全控制模块调用的接口是否在配置文件中有定义;
步骤53:安全控制模块检查用户权限,接口访问,确定是否可以有权限访问。
进一步的,所述步骤6中接口反射代理模块将通过安全检查的服务请求进行封装具体过程是
步骤61:将步骤5的安全验证结果封装于请求的上下文数据体中;
步骤62:将参数接口部分的参数通过反射进行初始化,生成数据代理,隐藏请求细节;
步骤63:转入接口反射代理中心;
进一步的,一种基于Spring MVC的RESTful服务设计方法还包括日志统计模块,用于对所述接口发射代理模块进行访问量、日志审计、系统检测。
本发明的有益效果:
1)本发明在基于Spring MVC框架的基础之上,设计和实现了Web Service的平台核心,提供了开发服务平台的诸多领域问题的解决方案:如应用认证、会话管理、安全控制、错误模型、版本管理、超时限制等。
2)该方法通过RESTful(Representational State Transfer)请求模型使得每中服务都能通过唯一的URL进行定义与调用,使得开发者可以自由地随时随地访问服务而无需复杂的外部程序依赖,让服务接口清晰,服务调用方便,降低开发者理解服务的难度。
3)提供功能完备的基于应用层的服务接口平台,方便进行二次开发,使开发人员能集中在业务实现上,对于安全检查,数据封装,日志审计和响应处理均能由本平台提供完全、完善、可靠的服务。
具体实施方式
下列非限制性实施例用于说明本发明。
实施例1:
1.假设服务请求者的接口入口URL为 http://www.changhong.com/api, 用户要调用目前可用频道列表,此接口的服务定义为channel
必须的系统参数为:
appkeyId: 调用者的ID
method: 调用的方法名称
format:结果返回格式:xml/json
服务参数:
channelId: 对应的频道ID, 0表示所有频道
系统会根据系统参数和用户参数,得到参数序列:
系统参数:appkeyId=123&method=getAvailableChannel&format=json
服务参数:channelId=0
2.根据以上服务的传送参数,服务处理中心调用安全控制模块,对请求字符串进行SHA1签名运算,将签名值转换为十六进制的编码串,假如得到:
String sign = Util.SHA1(系统参数+@+用户参数);
本例中为:
String sign = Util.SHA1(appkeyId=123&method=getAvailableChannel&format=json@ channelId=0);
假设得到的签名运算结果为:4325FD7EEAE1E68203B48C64DE495792BF59E833
最后,客户端即可使用如下的URL请求串对服务方法发起GET请求,从web控制台我们可以看到请求数据如下:
http://www.changhong.com/api/channel?sign=4325FD7EEAE1E68203B48C64DE495792BF59E833&appkeyId=123&method=getAvailableChannel&format=json&channleId=0。
3.根据安全模块的返回数据,接口反射代理模块和响应处理模块将接口返回报文反馈给服务请求者。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于Spring MVC的RESTful服务设计方法,其特征在于包括:
步骤1:用户向服务器提供的统一接口Facade发起服务请求,执行步骤2;
步骤2:服务器接口Facade接受服务请求,并通过服务接口对该请求进行统一的预处理,转入服务定义配置文件,获取组件的相应注册信息,执行步骤3;
步骤3:根据服务定义配置文件中Schema命名空间对该服务定义并转入服务处理中心,执行步骤4;
步骤4:服务处理中心根据注册信息,封装应用上下文,形成统一的请求数据结构,该服务完成注册初始化,并对该服务进行路由派发,即发送到安全控制模块,执行步骤5;
步骤5:启用安全控制模块检查调用的服务是否存在,用户请求是否超过规定的限制,用户是否有调用该服务的权限,确保数据的完整性和安全性;安全控制模块验证结果返回给服务处理中心,执行步骤6;否则,返回错误的响应信息;
步骤6:服务处理中心将安全验证的封装结果转入接口反射代理模块,执行步骤7;
步骤7:对于步骤5验证结果进行统一的日志审计记录,若安全验证未通过的,直接返回,转入响应处理步骤8;若安全验证通过且可以正常调用服务的,通过步骤6中的接口反射代理模块调用相应的模块对该服务进行处理,将结果和响应封装后返回接口代理组件;
步骤8:将接口反射代理模块的处理结果,统一转到响应处理模块;
步骤9:响应处理模块根据请求参数定义的返回格式,对响应内容进行相应的编码及格式转换,返回给客户端;
所述步骤2通过服务接口对该请求进行统一预处理的具体过程是:
1)根据服务器接口请求参数,提取其中的系统参数和用户参数,拼接成参数字符串,进行参数剖析;
2)对字符串进行签名运算认证,生成签名标识,附加在请求参数前,对服务器接口请求进行封装;
3)转入服务定义配置文件,获取组件的相应注册信息;
所述步骤3中服务定义配置文件通过Schema命名空间对该服务进行定义具体过程是:通过继承SPRING的命名空间,扩展出自定义的配置文件,注册到SPRING容器当中,当SPRING容器启动的时候,自动会加载这些服务配置文件,通过依赖注入和自动扫描实现组件的初始化。
2.根据权利要求1所述的一种基于Spring MVC的RESTful服务设计方法,其安全控制模块特征在于所述步骤5中启用安全控制模块检查调用的服务是否存在,用户请求是否超过规定的限制,用户是否有调用该服务的权限,确保数据的完整性和安全性具体步骤包括:
步骤41:安全控制模块检查参数与签名,确保传入参数是合法并未篡改的;
步骤42:安全控制模块调用的接口是否在配置文件中有定义;
步骤43:安全控制模块检查用户权限,接口访问,确定是否可以有权限访问。
3.根据权利要求1所述的一种基于Spring MVC的RESTful服务设计方法,其特征在于所述步骤6中接口反射代理模块将通过安全检查的服务请求进行封装具体过程是
步骤51:将步骤5的安全验证结果封装于请求的上下文数据体中;
步骤52:将参数接口部分的参数通过反射进行初始化,生成数据代理,隐藏请求细节;
步骤53:转入接口反射代理中心。
4.根据权利要求1所述的一种基于Spring MVC的RESTful服务设计方法,其特征在于还包括日志统计模块,用于对所述接口发射代理模块进行访问量、日志审计、系统检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410690475.8A CN104639603B (zh) | 2014-11-27 | 2014-11-27 | 一种基于Spring MVC的RESTful服务设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410690475.8A CN104639603B (zh) | 2014-11-27 | 2014-11-27 | 一种基于Spring MVC的RESTful服务设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104639603A CN104639603A (zh) | 2015-05-20 |
CN104639603B true CN104639603B (zh) | 2018-09-14 |
Family
ID=53217905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410690475.8A Active CN104639603B (zh) | 2014-11-27 | 2014-11-27 | 一种基于Spring MVC的RESTful服务设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104639603B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105007265A (zh) * | 2015-06-24 | 2015-10-28 | 福建富士通信息软件有限公司 | 将SOAP转换为Spring远程调用的方法及系统 |
CN105389186A (zh) * | 2015-11-20 | 2016-03-09 | 福建亿榕信息技术有限公司 | 一种Java应用的热部署方法及系统 |
CN105847339A (zh) * | 2016-03-18 | 2016-08-10 | 美分期科技有限公司 | 智慧医疗服务平台 |
CN107346320B (zh) * | 2016-05-06 | 2020-09-01 | 北京神州泰岳软件股份有限公司 | 一种数据调用方法和装置 |
CN107872484B (zh) * | 2016-09-27 | 2020-12-25 | 中国电信股份有限公司 | Rest api快速注册方法、装置和系统 |
CN106844428A (zh) * | 2016-12-12 | 2017-06-13 | 安徽四创电子股份有限公司 | 一种基于RESTful接口的前端MVC管理平台设计方法 |
CN107220294A (zh) * | 2017-04-26 | 2017-09-29 | 努比亚技术有限公司 | 一种请求处理的方法和终端 |
CN111158671B (zh) * | 2019-12-30 | 2023-03-21 | 上海云瀚科技股份有限公司 | 基于注册和定向扫描的微服务架构软件模块动态加载方法 |
CN111698205B (zh) * | 2020-04-29 | 2023-09-26 | 中国平安财产保险股份有限公司 | 服务调用方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184100A (zh) * | 2011-04-19 | 2011-09-14 | 武汉达梦数据库有限公司 | 基于soa的地质灾害防治信息化服务集成框架及方法 |
CN104008502A (zh) * | 2014-06-17 | 2014-08-27 | 大连大学 | 电子拍卖系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120130856A1 (en) * | 2010-11-24 | 2012-05-24 | Digital River, Inc. | Modularized In Application Commerce System and Method |
-
2014
- 2014-11-27 CN CN201410690475.8A patent/CN104639603B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184100A (zh) * | 2011-04-19 | 2011-09-14 | 武汉达梦数据库有限公司 | 基于soa的地质灾害防治信息化服务集成框架及方法 |
CN104008502A (zh) * | 2014-06-17 | 2014-08-27 | 大连大学 | 电子拍卖系统 |
Non-Patent Citations (1)
Title |
---|
《基于Spring的REST式Web服务研究与应用》;潘金亚;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20131231;正文第44页至第57页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104639603A (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104639603B (zh) | 一种基于Spring MVC的RESTful服务设计方法 | |
US11582303B2 (en) | Multi-tenancy via code encapsulated in server requests | |
US10715553B2 (en) | Inter-domain replication of service information | |
US8805930B2 (en) | Managing application programming interfaces in a collaboration space | |
EP3301881B1 (en) | Method, device and system for using and invoking oauth api | |
CN109815025B (zh) | 一种业务模型调用方法、装置及存储介质 | |
US20130086629A1 (en) | Dynamic identity context propagation | |
US9922181B2 (en) | Security model for network information service | |
CN104572099A (zh) | 基于组件和中间件的低耦合框架数据处理方法及系统 | |
CN108347471B (zh) | 获取第三方用户信息的方法、装置及系统 | |
US20210320989A1 (en) | Generic communication layer | |
KR20140089977A (ko) | 개방형 모바일 클라우드 게이트웨이 | |
Sun et al. | Application of Web Services Technology in Telecommunication Point Redemption System | |
KR20140089978A (ko) | 모바일 클라우드에서의 레거시 시스템 연동 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |