何喜同学一直在尝试在SAP PO上调通一个RESTFUL接口,我觉得我可以给他提供一个RESTFUL的服务端程序和RESTFUL的服务,
这样我们可以在接口上传递复杂的JSON报文,从一层加到多层的,最终实现我们可以按层级在PO上完成相应的配置。
VS2019 C#环境提供RESTful服务环境是比较简单的,都是使用MS已经做好的功能。
还是同原来 搭建一个WebService接口环境(SAP PO 开发 二) 中一样的思路,我喜欢用WINFORM桌面程序来存放REST服务,不需要去架设web服务来实现。
一、建一个WCF的DLL程序:
同WS服务一样,还是使用MS的WCF组件,新建一个WCF的DLL程序,下面是自动产生的代码。
除了这一句是我新加的,来自于一篇rest教程,看起来WS 和 REST的区别其实只要指定报文的格式为JSON,其它都是一样的:
[WebInvoke(
Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "GetData/value={value}"
)]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace WcfServiceLibrary1
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(
Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "GetData/value={value}"
)]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: 在此添加您的服务操作
}
// 使用下面示例中说明的数据约定将复合类型添加到服务操作。
// 可以将 XSD 文件添加到项目中。在生成项目后,可以通过命名空间“WcfServiceLibrary1.ContractType”直接使用其中定义的数据类型。
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
}
OK,点一下执行,VS2019居然给这个DLL程序安排了一个测试的客户端
然后用浏览器访问一下,RESTful服务器已经建立了,后面我只需要建一个WINFORM程序,把这个DLL运行起来就可以了,今天没心情做完,暂时就这样吧。