配置发送器REST适配器
配置发送方REST适配器以将内容从远程客户端发送到集成服务器。
先决条件
您已经使用适配器类型REST创建了一个发送方通道,并选择在集成目录中对其进行配置。
程序
定义请求格式
指定传入消息的数据格式。从数据格式列表中选择XML或JSON。要处理非结构化文本,请选择JSON。消息编码可以由字符集源和值(如果适用)指定。您有以下选项:
使用固定的手动值并提供字符集名称(默认值为UTF-8)
使用HTTP内容类型标头中的值
通过指定标头字段从自定义HTTP标头中检索值
如果字符集在URL内作为GET变量传递,请提供相应的变量名
通过选择JSON内容元素并提供定位JSON元素的JSON路径表达式,从负载中检索值
笔记
此功能目前仅适用于JSON中的有效负载,其值预计为US-ASCII。
如果格式是JSON,REST适配器可以将其转换为XML。如果您希望根据消息内容在PI中进行进一步处理(例如映射或路由),这是必要的。激活转换为XML。如果JSON可能包含多个顶级元素,则还可以激活添加包装器元素选项。输入包装器元素的名称和命名空间。
如果JSON请求预期包含具有无效XML名称开始字符或XML名称字符的键,请激活转义无效名称开始字符和/或Mangle无效名称字符选项。这些将分别用转义序列选项中配置的序列转义XML标记开头或其余部分的无效字符。
定义服务质量
从服务质量列表中选择集成引擎处理消息的方式。按顺序只输入一次队列名称。为了尽最大努力,请指定响应格式。
以更动态的方式定义服务质量的其他方法:
••通过HTTP操作
对于每个HTTP操作(GET、POST、PUT、DELETE),您可以指定要使用的专用服务质量。例如,如果您想对实体上的所有操作使用一个通道,则这是必要的,其中GET操作需要尽最大努力,而PUT操作只能使用一次。
•按接口操作
如果通道设置为支持多个XI操作/接口,则可以在操作确定选项卡上单独设置每个操作的服务质量。
笔记
如果服务质量是尽力而为,则默认HTTP状态代码为200;对于异步调用,它是202。
指定响应格式
对于同步场景(尽力而为),您需要指定响应消息的格式和处理。您可以选择响应数据格式是JSON还是XML。要处理非结构化文本,请选择JSON。您可以选择从消息(PI消息的外部元素)中剥离操作。您可以使用请求消息字符集或手动值来指定消息的编码。在后一种情况下,输入字符集名称。如果预期的数据格式是JSON,则可以选择将XML负载转换为JSON。如果消息包含包装,您可以选择通过激活Strip Outer Element来删除它。
如果负载预期包含转义XML标记名,则通道可以通过启用删除转义名称开始字符和/或删除无效名称字符的损坏,将转义字符转换回其原始值。在转义序列选项中指定使用的转义序列。
指定响应HTTP标头
您可以在结果HTTP标头选项卡上指定要返回给调用客户端的HTTP标头。指定自定义标头名称和获取值的源。可用的源是静态值、XI消息属性或消息内容的一部分,由JSON对象名或XPath表达式指定。
配置通道选择
通道选择参数指定该通道将处理哪些消息。每个REST适配器发送方通道都有一个固定或动态端点名称,并且只处理与固定或动态过滤器模式匹配的消息。REST适配器公开了一个固定基端点URL。您可以通过使用自定义零件对其进行扩展来优化此地址。
激活“指定端点”并输入自定义端点名称扩展名。
您可以通过激活“允许公共访问”使此频道可供公共访问。此选项完全禁用对此发送方通道的授权。
通过将CORS参数设置为允许所有客户端或仅允许特定客户端,具有公共访问权限的通道允许启用跨源资源共享请求(COR)。在后一种情况下,您必须指定允许的客户端URI的逗号分隔列表,如“https://myHost.com, http://anotherserver.org“。星号“*”符号指定允许所有客户端。
如果希望通道处理负载中具有特定属性的消息,请激活Limit to JSON元素或Limit to XPath元素(取决于输入数据格式),通过其JSON路径或XPath指定元素,并在表达式字段中输入该元素的预期值。
笔记
该值应为US-ASCII。
REST发送方通道可以处理所有HTTP操作。要为特定操作配置通道,请激活限制到HTTP操作,并从HTTP操作列表中选择所需的操作。
定义REST资源
指定此频道要处理的URL的格式及其包含的信息。REST请求通常提供有关要调用的服务、资源和/或资源类型以及要执行的操作的信息。
URL模式
URL模式描述了此通道使用命名占位符处理的URL的可变部分。您可以选择一个预定义的图案,也可以输入自定义图案。您可以使用预定义模式中的占位符以外的占位符。每个占位符变量名必须用花括号括起来。
不要在模式中使用GET变量。您可以使用操作源定义中的Get Variable来提取URL变量的值。
资源来源
对于构成REST请求的每个资源,您可以指定信息源。REST资源选项卡为最多十个REST资源提供了方便的输入字段,包括最常见的资源,如服务、资源类型和资源ID。从动态属性列表中选择预定义资源或自定义属性之一。如果选择自定义属性,则还必须输入名称。按下表所述指定属性值。使用XI动态属性输入字段之一后,将显示一个新的组或表。通过添加行并在变量列中输入资源名称,可以在附加属性表中定义附加资源。以下选项可用:
资源来源
值源(选择公共资源) | 类型(输入其他资源) | 描述/表达式 |
手动值 | 手动 | 手动提供要使用的静态值。 |
URL模式元素 | URL | 通过指定模式元素占位符名称(不包括大括号),从URL中检索值。 GET变量GET通过提供各自的GET变量名称从URL中检索值。 |
GET变量 | GET | 通过提供各自的GET变量名称从URL中检索值 |
HTTP头变量 | Header | 通过指定HTTP头元素名称从HTTP头中检索值 |
HTTP操作 | HTTP | 使用HTTP操作;不需要表达式 |
XML内容元素 | XPath | 通过提供用于定位具有简单文本内容的单个元素或属性的XPath表达式,从XML负载中检索值 |
JSON内容元素 | JPath | 通过使用JSONPath表达式定位具有简单文本内容的JSON元素,从JSON负载中检索值 |
定义REST操作
指定要对由上一选项卡上的信息标识的资源执行的REST操作。
操作源
指定如何查找有关要执行的REST操作的信息。以下选项可用:
操作源
值源 | 描述/表达 |
手动值 | 手动提供要使用的静态值;无需映射(下一步) |
URL模式元素 | 通过指定模式元素占位符名称(不包括大括号)从URL中检索值 |
GET变量 | 通过提供相应的GET变量名称从URL中检索值 |
HTTP头变量 | 通过指定HTTP头元素名称从HTTP头中检索值 |
HTTP操作 | 使用HTTP操作;无需表达式和映射(下一步) |
XML内容元素 | 通过提供XPath表达式来从XML负载中检索值,该表达式定位具有简单文本内容的单个元素或属性 |
JSON内容元素 | 通过使用JSONPath表达式定位具有简单文本内容的JSON元素,从JSON负载中检索值 |
将源值映射到操作
如果选择了提供动态值的源(除手动值和HTTP操作外的所有内容),则可以通过输入表达式来指定与REST操作关联的值。REST操作选项卡为每个REST操作提供了一个输入字段。如果定义的源的多个值与操作关联,则可以通过添加行并在操作列中输入GET、POST、PUT或DELETE,以及在表达式列中输入相应的值,在附加操作映射表中定义附加映射。
确定XI操作
在“操作确定”选项卡上,指定REST操作如何映射到XI操作。对于PI系统,传入消息需要包含有关操作/消息类型的信息,作为消息内容的外部XML元素。对于每个操作对,您需要向XI操作表中添加一行,并提供以下信息:
•由变量进行的REST操作,该变量将此变量的信息和可能值保存为表达式
•PI中与所需操作及其命名空间相关联的消息类型的XI操作
如果选择了按接口操作服务质量,则可以为指定的每个规则定义服务质量。
操作确定
服务质量的价值
Quality Of Service | Value | Note |
BestEffort | BE | |
ExactlyOnce | EO | Default |
ExactlyOnceInOrder | EOIO |
以下3个示例描述了传入HTTP调用到XI操作/接口的映射。
示例1:
将所有已处理的调用映射到特定的XI操作/接口(此处为CUSTOMER\u CREATE)
Mapping
Variable | Expression | Operation | Namespace | Quality Of Service |
{operation} | * | CUSTOMER_CREATE | http://demo.sap.com |
示例2:
根据传入的HTTP操作,将调用映射到不同的XI操作/接口。除了使用BestEffort的CUSTOMER\u GET之外,所有调用都使用ExactlyOnce的QoS。
Mapping
Variable | Expression | Operation | Namespace | Quality Of Service |
{operation} | GET | CUSTOMER_GET | http://demo.sap.com | BE |
{operation} | PUT | CUSTOMER_UPDATE | http://demo.sap.com | |
{operation} | POST | CUSTOMER_CREATE | http://demo.sap.com | |
{operation} | DELETE | CUSTOMER_DELETE | http://demo.sap.com |
Example URL: http://host:port/RESTAdapter/Customer
例3
根据传入服务名称将调用映射到不同的XI操作/接口。除了使用BestEffort的CUSTOMER\u GET之外,所有呼叫都使用ExactlyOnce的QoS
Mapping
Variable | Expression | Operation | Namespace | Quality Of Service |
{service} | customer_list | CUSTOMER_GET | http://demo.sap.com | BE |
{service} | customer_change | CUSTOMER_UPDATE | http://demo.sap.com | |
{service} | customer_new | CUSTOMER_CREATE | http://demo.sap.com | |
{service} | customer_remove | CUSTOMER_DELETE | http://demo.sap.com |
Example URLs:
http://host:port/RESTAdapter/Customer_list
http://host:port/RESTAdapter/customer_change
http://host:port/RESTAdapter/customer_new
http://host:port/RESTAdapter/customer_remove
后果
您已配置REST发送器适配器。部署后,您可以使用以下基本URL调用发送方适配器:<host>:<port>/RESTAdapter/。如果配置了自定义端点,则URL为主机:重新适配器。
发件人Ping
在发送方通道上启动通道ping将显示整体状态以及基本配置设置,如端点名称、URL模式和数据格式。