CN106550005A - 用于处理rest软件架构中的媒体类型的方法和装置 - Google Patents
用于处理rest软件架构中的媒体类型的方法和装置 Download PDFInfo
- Publication number
- CN106550005A CN106550005A CN201510614150.6A CN201510614150A CN106550005A CN 106550005 A CN106550005 A CN 106550005A CN 201510614150 A CN201510614150 A CN 201510614150A CN 106550005 A CN106550005 A CN 106550005A
- Authority
- CN
- China
- Prior art keywords
- medium type
- data model
- processor
- type processor
- message
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开的实施例提供了一种用于处理表述性状态传递软件架构中的媒体类型的方法和装置。该方法包括:从来自客户端的请求中提取指定用于该请求的第一媒体类型,其中该请求包括向服务器发送的消息;响应于确定存在支持第一媒体类型的第一媒体类型处理器,由第一媒体类型处理器将消息转化为第一数据模型的实例;以及向服务器发送第一数据模型的实例。与现有技术相比,本公开的实施例能够在无须改变现有数据模型的情况下增加对新的媒体类型的支持,从而提高了web应用的开发效率。
Description
技术领域
本公开的实施例总体涉及web应用和服务,更具体地,涉及用于处理表述性状态传递(REST)软件架构中的媒体类型的方法和装置。
背景技术
REST是具有一组设计约束的软件架构。访问满足REST原则(RESTful)的应用或服务的应用编程接口(API),被称为RESTfulAPI或者REST API。目前在web API的类别中,RESTful API已经成为主流的API类型。对于RESTful API,媒体类型(media type)定义了客户端和服务器交换消息(也被称为表述(representation))的语法和语义,例如,大多数RESTful API支持可扩展标记语言(XML)格式表述或者JavaScript对象注释(JSON)格式表述。
然而,即使针对JSON格式的表述,也存在大量的开放的媒体类型(例如Siren,HAL,Masan,Uber等)以及未对用户公开的自定义媒体类型。所有这些媒体类型在标记上略有差异,例如,针对呈现链路关系的方式,针对呈现属性的方式等。这对于设计新的web API或者将遗留系统转变为REST架构造成不便。因为难以选择媒体类型,所以难以将现有的业务数据模型映射成特定的媒体类型表述。
另外,web应用经常具有其自身的数据模型,为了针对该应用创建RESTful API,经常会选择特定的数据绑定技术以将其业务数据模型绑定到特定的媒体类型表述。在该应用需要支持更多媒体类型或者将其媒体类型从一种类型改变为另一种类型时,通常需要改变现有数据模型或者引入新的数据模型来将它们绑定到新的媒体类型。由于对于数据模型的修改容易破坏系统的兼容性,因此这种紧密绑定的设计对于应用的演进带来巨大挑战。
因此,本领域中需要一种更为有效的方案以解决上述问题。
发明内容
本公开的实施例旨在提供一种用于处理表述性状态传递软件架构中的媒体类型的方法和装置,以解决上述问题。
根据本公开的一个方面,提供了一种用于处理表述性状态传递软件架构中的媒体类型的方法,包括:从来自客户端的请求中提取指定用于所述请求的第一媒体类型,其中所述请求包括向服务器发送的消息;响应于确定存在支持所述第一媒体类型的第一媒体类型处理器,由所述第一媒体类型处理器将所述消息转化为第一数据模型的实例;以及向所述服务器发送所述第一数据模型的实例。
在一些实施例中,所述方法还包括:从所述请求中提取指定用于所述请求的响应的第二媒体类型。
在一些实施例中,所述方法还包括:从所述服务器接收向所述客户端返回的第二数据模型的实例;响应于确定存在支持所述第二媒体类型的第二媒体类型处理器,由所述第二媒体类型处理器将所述第二数据模型的实例转化为消息;以及向所述客户端发送包括所述消息的所述响应。
在一些实施例中,所述方法还包括:创建所述第一数据模型。
在一些实施例中,创建所述第一数据模型包括:利用统一注释来标注所述第一数据模型,以向所述第一媒体类型处理器提供用于所述第一媒体类型的元信息。
在一些实施例中,所述统一注释包括可序列化类型、可序列化域以及可序列化条目中的至少一个。
在一些实施例中,所述方法还包括:创建支持所述第一媒体类型的所述第一媒体类型处理器。
在一些实施例中,创建支持所述第一媒体类型的所述第一媒体类型处理器包括:创建读取器,以使得能够将所述第一媒体类型的消息转化为所述第一数据模型的实例;以及创建写入器,以使得能够将所述第一数据模型的实例转化为所述第一媒体类型的消息。
在一些实施例中,所述方法还包括:根据预定的规则验证所述第一媒体类型处理器。
在一些实施例中,所述方法还包括:将所述第一媒体类型处理器配置为与所述第一媒体类型相关联,以使得所述第一媒体类型处理器能够处理所述第一媒体类型。
根据本公开的另一方面,提供了一种用于处理表述性状态传递软件架构中的媒体类型的装置,包括:媒体类型提取模块,被配置为从来自客户端的请求中提取指定用于所述请求的第一媒体类型,其中所述请求包括向服务器发送的消息;反序列化模块,被配置为响应于确定存在支持所述第一媒体类型的第一媒体类型处理器,由所述第一媒体类型处理器将所述消息转化为第一数据模型的实例;以及数据发送模块,被配置为向所述服务器发送所述第一数据模型的实例。
在一些实施例中,所述媒体类型提取模块还被配置为:从所述请求中提取指定用于所述请求的响应的第二媒体类型。
在一些实施例中,所述装置还包括:数据接收模块,被配置为从所述服务器接收向所述客户端返回的第二数据模型的实例;序列化模块,被配置为响应于确定存在支持所述第二媒体类型的第二媒体类型处理器,由所述第二媒体类型处理器将所述第二数据模型的实例转化为消息;以及响应发送模块,被配置为向所述客户端发送包括所述消息的所述响应。
在一些实施例中,所述装置还包括:数据模型创建模块,被配置为创建所述第一数据模型。
在一些实施例中,所述数据模型创建模块被配置为:利用统一注释来标注所述第一数据模型,以向所述第一媒体类型处理器提供用于所述第一媒体类型的元信息。
在一些实施例中,所述统一注释包括可序列化类型、可序列化域以及可序列化条目中的至少一个。
在一些实施例中,所述装置还包括:媒体类型处理器创建模块,被配置为创建支持所述第一媒体类型的所述第一媒体类型处理器。
在一些实施例中,所述媒体类型处理器创建模块被配置为:创建读取器,以使得能够将所述第一媒体类型的消息转化为所述第一数据模型的实例;以及创建写入器,以使得能够将所述第一数据模型的实例转化为所述第一媒体类型的消息。
在一些实施例中,所述装置还包括:媒体类型处理器验证模块,被配置为根据预定的规则验证所述第一媒体类型处理器。
在一些实施例中,所述装置还包括:媒体类型处理器注册模块,被配置为将所述第一媒体类型处理器配置为与所述第一媒体类型相关联,以使得所述第一媒体类型处理器能够处理所述第一媒体类型。
根据本公开的又一方面,提供了一种处理表述性状态传递软件架构中的媒体类型的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行所述方法的任意步骤。
与现有技术相比,本公开的实施例能够在无须改变现有数据模型的情况下增加对新的媒体类型的支持,从而提高了web应用的开发效率。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出了本公开的若干实施例,其中:
图1示出了适于用来实现本公开的实施例的示例性计算机系统/服务器12的框图;
图2示出了根据本公开的实施例的用于处理REST软件架构中的媒体类型的环境200的示意图;
图3示出了根据本公开的实施例的用于处理REST软件架构中的媒体类型的方法300的示意图;
图4示出了根据本公开的实施例的用于处理REST软件架构中的媒体类型的方法400的流程图;
图5示出了根据本公开的实施例的用于创建媒体类型处理器的方法500的流程图;以及
图6根据本公开的实施例的用于处理REST软件架构中的媒体类型的装置600的框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。应当理解,描述这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
图1示出了适于用来实现本公开的实施例的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开的各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参照图2,图2示出了根据本公开的实施例的用于处理REST软件架构中的媒体类型的环境200的示意图。
如图2所示,环境200包括客户端201、REST服务器202以及后端服务器203。例如,客户端201、REST服务器202以及后端服务器203可以由关于图1所描述的计算机系统/服务器12来实施。根据本公开的实施例,用户可以通过客户端201(例如,web应用中的网页)向REST服务器202发起REST请求。例如,在REST请求的负载(payload)中可以包括消息,该消息可以是某种媒体类型的表述,并且在该请求的头部指定了用于请求负载的媒体类型以及用于响应负载的媒体类型。REST服务器202将消息反序列化(deserialize)为数据模型(例如,包括定义具体数据对象的类)的实例,并且向后端服务器203(例如,数据库服务器)发送该数据模型的实例以请求对应的数据。响应于数据请求,后端服务器203向REST服务器202返回所请求的数据,其中返回的数据为可序列化(serializable)的数据模型的实例。REST服务器202将该数据模型的实例序列化(serialize)为消息,即由REST请求的头部指定的用于响应负载的媒体类型的表述。然后,向客户端201返回包含该消息的REST响应。
图3示出了根据本公开的实施例的用于处理REST软件架构中的媒体类型的方法300的流程图。下面结合图2来描述图3中的各步骤。例如,方法300可以由图2中的REST服务器202来执行。
在步骤S301,从来自客户端201的请求中提取指定用于该请求的第一媒体类型。例如,在REST请求的头部指定了用于该请求负载的媒体类型,并且请求的负载包括向后端服务器203发送的消息,即由REST请求的头部指定的用于该请求负载的媒体类型的表述。接下来,方法300进行至步骤S302。在步骤S302,响应于确定存在支持第一媒体类型的第一媒体类型处理器,由第一媒体类型处理器将消息转化为第一数据模型的实例。根据本公开的实施例,第一媒体类型可以包括XML类型(例如,application/atom+xml)或者JSON类型(例如,application/home+json)等。例如,第一数据模型可以是以Java语言编写的定义数据对象的类等。应当理解,第一媒体类型可以包括任何现有或将来开发的媒体类型,以及第一数据模型也可以以任何现有或将来开发的编程语言或者形式来表达。当确定存在支持第一媒体类型的第一媒体类型处理器时,由第一媒体类型处理器将消息反序列化化为第一数据模型的实例。接下来,方法300进行至步骤S303。在步骤S303,向后端服务器203发送第一数据模型的实例。以下的示例代码1示出了XML和JSON格式的表述(即消息)反序列化为以Java语言编写的定义数据对象的类的示例。
示例代码1
附加地或者备选地,还可以从REST请求的头部提取指定用于针对该请求的响应的第二媒体类型。根据本公开的一些实施例,例如,第二媒体类型可以与第一媒体类型相同,或者也可以与第一媒体类型不同。
至此,方法300结束。
图4示出了根据本公开的实施例的用于处理REST软件架构中的媒体类型的方法400的流程图。下面结合图2来描述图4中的各步骤。例如,方法400可以由图2中的REST服务器202来执行。
在步骤S401,从后端服务器203接收向客户端201返回的第二数据模型的实例。例如,第二数据模型可以是以Java语言编写的表示数据对象的类。根据本公开的实施例,第二数据模型可以与第一数据模型相同,或者也可以与第一数据模型不同。接下来,方法400进行至步骤S402,响应于确定存在支持第二媒体类型的第二媒体类型处理器,由第二媒体类型处理器将第二数据模型的实例转化为消息,其中如上所述第二媒体类型为从REST请求的头部提取指定用于针对该请求的响应的第二媒体类型。根据本公开的实施例,当第二媒体类型与第一媒体类型相同时,第二媒体类型处理器即为第一媒体类型处理器。此外,当确定不存在支持第二媒体类型的第二媒体类型处理器时,可以由默认媒体类型处理器(例如,用于XML类型的媒体类型处理器)将第二数据模型的实例转化为消息(例如,以XML格式的表述)。接下来,方法400进行至步骤S403。在步骤S403,向客户端201发送包括该消息的响应。例如,消息可以被包括在该响应的负载中。
至此,方法400结束。
以上描述了在运行时(runtime)处理REST软件架构中的媒体类型的各种方法。除此以外,根据本公开的实施例,在初始阶段还可以针对新的资源来创建新的REST数据模型。根据本公开的实施例,创建可序列化数据模型包括利用统一注释来对数据模型进行标注,以向媒体类型处理器提供用于相应媒体类型的元信息。其中,统一注释可以包括可序列化类型(@SerializableType)、可序列化域(@SerializableField)以及可序列化条目(@SerializableEntry)。可序列化类型可以被用于将数据模型的类标记为可序列化REST表述,例如,以上的示例代码1中给出了可序列化类型的使用示例。可序列化域可以被用于将类的域标记为可序列化的,并且该注释仅被用于利用可序列化类型标记的类的域。可序列化条目可以使得利用该注释标记的类被序列化为键-值对(key-value pair)。例如,以下的示例代码2和示例代码3分别给出了可序列化域和可序列化类型的使用示例。媒体类型处理器可以利用统一注释将数据模型的实例序列化为相应媒体类型的表述;反过来,可以通过搜索数据模型中的统一注释来将媒体类型的表述反序列化为相应的数据模型的实例。
示例代码2
示例代码3
附加地或者备选地,在创建新的REST数据模型后,可以根据预定的规则对创建的数据模型进行验证。例如,可以通过XML配置来定制预定的规则;并且可以针对数据模型中的每个类,验证其是否符合指定的规则。此外,可以对创建的数据模型进行预览(preview)以及可以将创建的数据模型打包到REST应用以供使用。
根据本公开的实施例,可以创建用于处理媒体类型(例如,上述第一媒体类型或第二媒体类型,或者一种新的媒体类型等)的媒体类型处理器。出于简化说明的目的,以下以第一媒体类型为例说明创建支持第一媒体类型的第一媒体类型处理器的方法。例如,图5示出了根据本公开的实施例的用于创建媒体类型处理器的方法500的流程图。
在步骤S501,创建支持第一媒体类型的第一媒体类型处理器。根据本公开的实施例,创建第一媒体类型处理器包括创建读取器(reader),以用于接收消息并将其转化为对应的数据模型的实例。创建第一媒体类型处理器还包括创建写入器(writer),以用于接收数据模型的实例并将其转化为对应的消息。接下来,方法500进行至步骤S502,根据预定的规则验证第一媒体类型处理器。例如,预定的规则可以包括数据模型不能具有同名的两个成员等。接下来,方法500进行至步骤S503,将第一媒体类型处理器配置为与第一媒体类型相关联,以使得第一媒体类型处理器能够处理第一媒体类型。例如,可以通过XML配置文件来实现将第一媒体类型处理器与第一媒体类型相关联。此外,也可以将第一媒体类型处理器配置为与多种媒体类型相关联。
应当理解,图5以第一媒体类型处理器为例来说明用于创建媒体类型处理器的方法仅是出于简化说明的目的。在实践中,方法500可以被应用于创建第一媒体类型处理器、第二媒体类型处理器和/或用于任何现有或将来开发的媒体类型的媒体类型处理器。此外,通过图5所示的方法500应当理解,针对一种新的媒体类型,仅需要创建针对该媒体类型的媒体类型处理器,而无须对现有REST应用中的数据模型进行修改。
至此,方法500结束。
图6根据本公开的实施例的用于处理REST软件架构中的媒体类型的装置600的框图。装置600包括:媒体类型提取模块601,被配置为从来自客户端的请求中提取指定用于所述请求的第一媒体类型,其中所述请求包括向服务器发送的消息;反序列化模块602,被配置为响应于确定存在支持所述第一媒体类型的第一媒体类型处理器,由所述第一媒体类型处理器将所述消息转化为第一数据模型的实例;以及数据发送模块603,被配置为向所述服务器发送所述第一数据模型的实例。
根据本公开的实施例,媒体类型提取模块601还被配置为从所述请求中提取指定用于所述请求的响应的第二媒体类型。
根据本公开的实施例,装置600还包括:数据接收模块,被配置为从所述服务器接收向所述客户端返回的第二数据模型的实例;序列化模块,被配置为响应于确定存在支持所述第二媒体类型的第二媒体类型处理器,由所述第二媒体类型处理器将所述第二数据模型的实例转化为消息;以及响应发送模块,被配置为向所述客户端发送包括所述消息的所述响应。
根据本公开的实施例,装置600还包括数据模型创建模块,被配置为创建所述第一数据模型。
根据本公开的实施例,所述数据模型创建模块被配置为利用统一注释来标注所述第一数据模型,以向所述第一媒体类型处理器提供用于所述第一媒体类型的元信息。
根据本公开的实施例,所述统一注释包括可序列化类型、可序列化域以及可序列化条目中的至少一个。
根据本公开的实施例,装置600还包括:媒体类型处理器创建模块,被配置为创建支持所述第一媒体类型的所述第一媒体类型处理器。
根据本公开的实施例,所述媒体类型处理器创建模块被配置为:创建读取器,以使得能够将所述第一媒体类型的消息转化为所述第一数据模型的实例;以及创建写入器,以使得能够将所述第一数据模型的实例转化为所述第一媒体类型的消息。
根据本公开的实施例,装置600还包括:媒体类型处理器验证模块,被配置为根据预定的规则验证所述第一媒体类型处理器。
根据本公开的实施例,装置600还包括:媒体类型处理器注册模块,被配置为将所述第一媒体类型处理器配置为与所述第一媒体类型相关联,以使得所述第一媒体类型处理器能够处理所述第一媒体类型。
出于清楚的目的,在图6中没有示出装置600的某些可选模块。然而,应当理解,上文参考本公开的方法所描述的各个特征同样适用于装置600。而且,装置600的各个模块可以是硬件模块,也可以是软件模块。例如,在某些实施例中,装置600可以部分或者全部利用软件和/或固件来实现,例如被实现为包含在计算机可读介质上的计算机程序产品。备选地或附加地,装置600可以部分或者全部基于硬件来实现,例如被实现为集成电路(IC)、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA)等。本公开的范围在此方面不受限制。
综上所述,本公开的实施例提供了一种用于处理REST软件架构中的媒体类型的方法和装置。与现有技术相比,本公开的实施例能够在无须改变现有数据模型的情况下增加对新的媒体类型的支持,从而提高了web应用的开发效率。
本公开的实施例可以是方法、装置和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开的实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言——诸如Smalltalk、C++等,以及常规的过程式编程语言——诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的实施例的各个方面。
这里参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能够理解本文公开的各实施例。
Claims (20)
1.一种用于处理表述性状态传递软件架构中的媒体类型的方法,包括:
从来自客户端的请求中提取指定用于所述请求的第一媒体类型,其中所述请求包括向服务器发送的消息;
响应于确定存在支持所述第一媒体类型的第一媒体类型处理器,由所述第一媒体类型处理器将所述消息转化为第一数据模型的实例;以及
向所述服务器发送所述第一数据模型的实例。
2.根据权利要求1所述的方法,还包括:
从所述请求中提取指定用于所述请求的响应的第二媒体类型。
3.根据权利要求2所述的方法,还包括:
从所述服务器接收向所述客户端返回的第二数据模型的实例;
响应于确定存在支持所述第二媒体类型的第二媒体类型处理器,由所述第二媒体类型处理器将所述第二数据模型的实例转化为消息;以及
向所述客户端发送包括所述消息的所述响应。
4.根据权利要求1所述的方法,还包括:
创建所述第一数据模型。
5.根据权利要求4所述的方法,其中创建所述第一数据模型包括:
利用统一注释来标注所述第一数据模型,以向所述第一媒体类型处理器提供用于所述第一媒体类型的元信息。
6.根据权利要求5所述的方法,其中所述统一注释包括可序列化类型、可序列化域以及可序列化条目中的至少一个。
7.根据权利要求1所述的方法,还包括:
创建支持所述第一媒体类型的所述第一媒体类型处理器。
8.根据权利要求7所述的方法,其中创建支持所述第一媒体类型的所述第一媒体类型处理器包括:
创建读取器,以使得能够将所述第一媒体类型的消息转化为所述第一数据模型的实例;以及
创建写入器,以使得能够将所述第一数据模型的实例转化为所述第一媒体类型的消息。
9.根据权利要求7所述的方法,还包括:
根据预定的规则验证所述第一媒体类型处理器。
10.根据权利要求7所述的方法,还包括:
将所述第一媒体类型处理器配置为与所述第一媒体类型相关联,以使得所述第一媒体类型处理器能够处理所述第一媒体类型。
11.一种用于处理表述性状态传递软件架构中的媒体类型的装置,包括:
媒体类型提取模块,被配置为从来自客户端的请求中提取指定用于所述请求的第一媒体类型,其中所述请求包括向服务器发送的消息;
反序列化模块,被配置为响应于确定存在支持所述第一媒体类型的第一媒体类型处理器,由所述第一媒体类型处理器将所述消息转化为第一数据模型的实例;以及
数据发送模块,被配置为向所述服务器发送所述第一数据模型的实例。
12.根据权利要求11所述的装置,其中所述媒体类型提取模块还被配置为:
从所述请求中提取指定用于所述请求的响应的第二媒体类型。
13.根据权利要求12所述的装置,还包括:
数据接收模块,被配置为从所述服务器接收向所述客户端返回的第二数据模型的实例;
序列化模块,被配置为响应于确定存在支持所述第二媒体类型的第二媒体类型处理器,由所述第二媒体类型处理器将所述第二数据模型的实例转化为消息;以及
响应发送模块,被配置为向所述客户端发送包括所述消息的所述响应。
14.根据权利要求11所述的装置,还包括:
数据模型创建模块,被配置为创建所述第一数据模型。
15.根据权利要求14所述的装置,其中所述数据模型创建模块被配置为:
利用统一注释来标注所述第一数据模型,以向所述第一媒体类型处理器提供用于所述第一媒体类型的元信息。
16.根据权利要求15所述的装置,其中所述统一注释包括可序列化类型、可序列化域以及可序列化条目中的至少一个。
17.根据权利要求11所述的装置,还包括:
媒体类型处理器创建模块,被配置为创建支持所述第一媒体类型的所述第一媒体类型处理器。
18.根据权利要求17所述的装置,其中所述媒体类型处理器创建模块被配置为:
创建读取器,以使得能够将所述第一媒体类型的消息转化为所述第一数据模型的实例;以及
创建写入器,以使得能够将所述第一数据模型的实例转化为所述第一媒体类型的消息。
19.根据权利要求17所述的装置,还包括:
媒体类型处理器验证模块,被配置为根据预定的规则验证所述第一媒体类型处理器。
20.根据权利要求17所述的装置,还包括:
媒体类型处理器注册模块,被配置为将所述第一媒体类型处理器配置为与所述第一媒体类型相关联,以使得所述第一媒体类型处理器能够处理所述第一媒体类型。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510614150.6A CN106550005A (zh) | 2015-09-23 | 2015-09-23 | 用于处理rest软件架构中的媒体类型的方法和装置 |
US15/269,220 US10944824B2 (en) | 2015-09-23 | 2016-09-19 | Method and apparatus for processing media type in rest software architecture |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510614150.6A CN106550005A (zh) | 2015-09-23 | 2015-09-23 | 用于处理rest软件架构中的媒体类型的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106550005A true CN106550005A (zh) | 2017-03-29 |
Family
ID=58283525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510614150.6A Pending CN106550005A (zh) | 2015-09-23 | 2015-09-23 | 用于处理rest软件架构中的媒体类型的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10944824B2 (zh) |
CN (1) | CN106550005A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182059A (zh) * | 2017-12-28 | 2018-06-19 | 云之行互联网科技(北京)有限公司 | 一种软件代码的处理方法及装置 |
CN109743179A (zh) * | 2018-12-29 | 2019-05-10 | 广州市中智软件开发有限公司 | 一种电子证照按需签发方法 |
CN111352742A (zh) * | 2018-12-21 | 2020-06-30 | 北京奇虎科技有限公司 | 一种基于app组件化的信息传递方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10467321B2 (en) | 2017-09-07 | 2019-11-05 | Mastercard International Incorporated | Systems and methods for dynamic C# serialization |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783019A (zh) * | 2004-12-03 | 2006-06-07 | 微软公司 | 用于创建web服务并与其交互的接口基础结构 |
US20070226306A1 (en) * | 2006-03-22 | 2007-09-27 | Andrea Cesarini | Messaging interface between telecommunications service provider processing systems |
CN101536458A (zh) * | 2006-11-03 | 2009-09-16 | 诺基亚公司 | 基于会话的通信 |
CN101617311A (zh) * | 2007-02-16 | 2009-12-30 | 微软公司 | 现实实体因特网存储服务 |
US20100083277A1 (en) * | 2008-09-30 | 2010-04-01 | Malladi Sastry K | System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture |
CN104049991A (zh) * | 2013-03-13 | 2014-09-17 | 国际商业机器公司 | 用于将网络应用转换为移动应用的方法和系统 |
US20140325337A1 (en) * | 2013-04-30 | 2014-10-30 | Adobe Systems Incorporated | Content request with http request-header rendering template that is independent of content storage location |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745641B1 (en) * | 2011-07-14 | 2014-06-03 | Google Inc. | Automatic verification and anomaly detection in a representational state transfer (REST) application programming interface |
US9569177B2 (en) * | 2014-08-29 | 2017-02-14 | Accenture Global Services Limited | Service extraction and application composition |
US10230571B2 (en) * | 2014-10-30 | 2019-03-12 | Equinix, Inc. | Microservice-based application development framework |
US11303691B2 (en) * | 2015-02-02 | 2022-04-12 | Vmware, Inc. | Streaming progress updates and results of rest API operations |
-
2015
- 2015-09-23 CN CN201510614150.6A patent/CN106550005A/zh active Pending
-
2016
- 2016-09-19 US US15/269,220 patent/US10944824B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783019A (zh) * | 2004-12-03 | 2006-06-07 | 微软公司 | 用于创建web服务并与其交互的接口基础结构 |
US20060150200A1 (en) * | 2004-12-03 | 2006-07-06 | Microsoft Corporation | Interface infrastructure for creating and interacting with web services |
US20070226306A1 (en) * | 2006-03-22 | 2007-09-27 | Andrea Cesarini | Messaging interface between telecommunications service provider processing systems |
CN101536458A (zh) * | 2006-11-03 | 2009-09-16 | 诺基亚公司 | 基于会话的通信 |
CN101617311A (zh) * | 2007-02-16 | 2009-12-30 | 微软公司 | 现实实体因特网存储服务 |
US20100083277A1 (en) * | 2008-09-30 | 2010-04-01 | Malladi Sastry K | System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture |
CN104049991A (zh) * | 2013-03-13 | 2014-09-17 | 国际商业机器公司 | 用于将网络应用转换为移动应用的方法和系统 |
US20140325337A1 (en) * | 2013-04-30 | 2014-10-30 | Adobe Systems Incorporated | Content request with http request-header rendering template that is independent of content storage location |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182059A (zh) * | 2017-12-28 | 2018-06-19 | 云之行互联网科技(北京)有限公司 | 一种软件代码的处理方法及装置 |
CN111352742A (zh) * | 2018-12-21 | 2020-06-30 | 北京奇虎科技有限公司 | 一种基于app组件化的信息传递方法及装置 |
CN111352742B (zh) * | 2018-12-21 | 2024-02-09 | 三六零科技集团有限公司 | 一种基于app组件化的信息传递方法及装置 |
CN109743179A (zh) * | 2018-12-29 | 2019-05-10 | 广州市中智软件开发有限公司 | 一种电子证照按需签发方法 |
CN109743179B (zh) * | 2018-12-29 | 2022-04-05 | 广州市中智软件开发有限公司 | 一种电子证照按需签发方法 |
Also Published As
Publication number | Publication date |
---|---|
US10944824B2 (en) | 2021-03-09 |
US20170085646A1 (en) | 2017-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104423983B (zh) | 用于开发、测试和部署应用的方法和装置 | |
JP7488006B2 (ja) | 機械学習を使用した表形式データの内容特定方法、システム、プログラム | |
US20170052884A1 (en) | Generic test automation for restful web services applications | |
KR102224759B1 (ko) | 컴퓨터 애플리케이션에 대한 언어 번역 현지화를 위한 기법 | |
CN103853535B (zh) | 修改中间件的方法和装置 | |
CN103713958B (zh) | 在不同语言的机器间同步图形用户界面操作的方法和设备 | |
CN106550005A (zh) | 用于处理rest软件架构中的媒体类型的方法和装置 | |
CN110046116B (zh) | 一种张量填充方法、装置、设备及存储介质 | |
CN110049118A (zh) | 消息推送方法、装置、设备及存储介质 | |
CN109408247A (zh) | 交互数据处理方法及装置 | |
US10360188B2 (en) | Dynamic property data integration framework | |
CN104252345A (zh) | 在云环境中管理复杂对象的方法及系统 | |
US20120316927A1 (en) | Computer-implemented method and apparatus for integrating heterogeneous business processes | |
CN111917579A (zh) | 分布式训练方法、装置、设备和存储介质 | |
CN110134596A (zh) | 测试文档的生成方法及终端设备 | |
TW201610713A (zh) | 在文件中識別且呈現相關報告實物 | |
CN108089879A (zh) | 增量更新方法、设备及可编程设备 | |
CN112631588A (zh) | 文件生成方法、装置、电子设备和计算机可读介质 | |
US20150161181A1 (en) | Schema-based application model validation in a database | |
CN110069247A (zh) | 一种应用程序的开发方法及装置、使用方法及装置 | |
CN109683917A (zh) | 用于将应用部署于应用服务器的方法、设备以及介质 | |
CN111046085B (zh) | 数据的溯源处理方法及装置、介质和设备 | |
CN110457318A (zh) | 区块链中数据字段的更新方法、装置、介质、电子设备 | |
CN110765610A (zh) | Pdm集成方法、装置、计算机设备及存储介质 | |
CN104424525B (zh) | 辅助确定项目范围的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200421 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Applicant before: EMC Corp. |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170329 |
|
RJ01 | Rejection of invention patent application after publication |