CN104639603B - 一种基于Spring MVC的RESTful服务设计方法 - Google Patents

一种基于Spring MVC的RESTful服务设计方法 Download PDF

Info

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
Application number
CN201410690475.8A
Other languages
English (en)
Other versions
CN104639603A (zh
Inventor
王素娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN201410690475.8A priority Critical patent/CN104639603B/zh
Publication of CN104639603A publication Critical patent/CN104639603A/zh
Application granted granted Critical
Publication of CN104639603B publication Critical patent/CN104639603B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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服务设计方法
技术领域
本发明属于网络服务设计领域,尤其是涉及一种基于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服务设计方法,其特征在于还包括日志统计模块,用于对所述接口发射代理模块进行访问量、日志审计、系统检测。
CN201410690475.8A 2014-11-27 2014-11-27 一种基于Spring MVC的RESTful服务设计方法 Active CN104639603B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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