使用 BizTalk Server 2013 公开 REST/JSON GET 终结点





5.00/5 (1投票)
将 BizTalk 架构公开为具有 GET 方法的 Rest/Json 服务。
引言
我们知道如何使用 POST 方法将 WCF 服务公开为 RESTFul 服务。 就像我们公开普通 WCF 服务一样,这是直接的。
我尝试使用 POST 方法创建 RestFull 服务,并且在一个小时内完成了它。 但是,执行 GET 终结点很痛苦。 因为我们没有太多在线文档。 因此,我做了很多研究,并找到了由 Steef Jan Wiggers (Microsoft Azure MVP) 提供的非常好的帖子。
背景
场景
客户端需要触发服务而无需任何输入,我们的 RestAPI 服务应通过执行 SQL 存储过程以 JSON 格式发回响应。
使用代码
解决方案
- 为 WCF 服务请求和响应创建两个架构
- 创建一个表和一个存储过程来从表中检索详细信息,而无需传递参数。
- 从创建的存储过程创建一个存储过程架构。
- 创建一个映射,将 SP 响应映射到 WCF 响应
- 创建一个自定义接收管道来提升字段。 从以下 URL 获取
https://github.com/BizTalkComponents/HttpDisassembler
- 创建一个带有 JSON 编码的自定义发送管道,以将 JSON 消息发送回服务。
- 创建一个业务流程来执行存储过程,并将存储过程响应转换为 WCF Rest 服务响应。
创建解决方案的步骤
- 创建一个架构并将字段提升为属性提升。
将 tenantId 字段提升为属性提升。
- 添加 SQL 存储过程架构 à 添加生成的项 à 使用适配器服务 à 添加
提供相应的 SQL 连接字符串并选择强类型存储过程,它会创建一个架构。
- 创建一个映射,将存储过程响应映射到 RestAPI 响应。
- 创建业务流程以检索存储过程并将 SP 响应映射到 WCF 服务响应,然后发回相同的请求-响应端口。
- 创建一个接收管道来提升我们提升的字段。
从以下 URL 获取 HTTP 反汇编程序管道组件
https://github.com/BizTalkComponents/HttpDisassembler
文件夹:src\HttpDisassembler\
- 创建一个发送管道 JSON 编码器以将 xml 转换为 JSON。
- 构建并将解决方案部署到管理控制台。
- 按照以下步骤创建一个服务。
选择 BizTalk WCF 服务发布向导。
转到 IIS HTTPRestServiceDemo 目录浏览启用
然后浏览服务
DocumentSpecname : <名称>, <程序集>
例如:DemoSchema.JsonCarrier, DemoSchema, Version=1.0.0.0, Culture=neutral, PublicKeyToken=36c63864bb129606
在 DocumentSpecName 中提供以上详细信息,并通过选择适当的管道来启用接收位置。
要启用 MetaData,请按照以下步骤操作
转到 C:\inetpub\wwwroot\HTTPRestServiceDemo Web.config
<behavior name="ServiceBehaviorConfiguration">
<serviceDebug httpHelpPageEnabled="true" httpsHelpPageEnabled="false" includeExceptionDetailInFaults="false" />
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="false" />
</behavior>
将 httpGetEnabled= True 作为上述示例。
现在我们已成功发布 RestService。
- 默认情况下,公开的服务已启用 POST 方法,现在我们需要将其更改为 GET 方法。
- 按照以下步骤创建 GET 终结点。
转到接收位置配置
在 HTTP 方法下复制粘贴以下代码
<BtsHttpUrlMapping>
<Operation Method="GET" Url="/tenantId/{pid}" />
<Operation Method="GET" Url="/tenantId" />
</BtsHttpUrlMapping>
转到编辑(变量映射)
propertyNameSpace == https://Carrier.Schema.PropertySchema
现在我们已成功将 POST 转换为 GET 方法。
- 现在我们需要测试该服务。
我们可以使用 Soap UI 进行测试
将资源 URL 从 /HTTPRestServiceDemo/Service1.svc 更改为 /HTTPRestServiceDemo/Service1.svc/tenantId/34。由于我们提升了 tenantId,因此消息将自动触发到 BizTalk。
您将获得如上图所示的响应。
关注点
1. 如何将 WCF 服务公开为 Rest/Json 服务。
2. 如何使用 BizTalk Server 使用 GET 终结点
3. 学习通过 JSON 将 BizTalk 架构公开为 WCF Rest 服务。
参考
http://blog.ibiz-solutions.se/integration/exposing-a-rest-get-endpoint-using-biztalk-server-2013/