0

我正在将 SOAP WCF 服务移植到 REST。到目前为止,我发现接收复杂类型作为响应几乎不需要任何东西。但是,我的问题是请求也是复杂类型。它有 2 个字段,其中一个是字符串,另一个是另一个复杂类型的列表。

我想使它成为 WebGet,因为它基本上是一种搜索方法,它要求某些参数并返回结果。

我该怎么做呢?什么是/不推荐?

请注意,我在 WCF 方面没有太多经验,如果我遗漏了一些明显的东西,我深表歉意。

4

2 回答 2

0

如果您想符合 REST 约定但保持相同的请求结构,您可能必须序列化复杂类型数组,对其进行 url 编码,并将其作为参数传递。这可能会生成很长的 URL,这可能是个问题。使用 POST 更实用,但正如 @Aron 指出的那样,这与 REST 不一致,因为 POST 应该只用于更新,而不是查询。

与其尝试复制 SOAP 请求结构,我建议您考虑一下该服务正在做什么,并以一种可以巧妙地适合参数的方式重新构思输入选项。如果您将此接口公开给第三方,那么无论您如何表达它,他们都会对复杂类型的数组感到困惑。

于 2013-10-13T06:35:22.257 回答
0

根据您的反馈并考虑到您无法控制执行实际工作的课程这一事实的限制,这是我的建议:

使用该端点的帖子,即复杂查询。确实,它没有遵循休息信,但它更接近于使用 https 动词,没有人应该为此敲你。

您还应该考虑为旧 SOAP 体系结构中的方法定义单独的端点,从而减少故障点。这种方法更接近于 RPC、远程过程调用,但这比 SOAP 是 POX、普通的旧 xml 更好。

希望这会有所帮助,顺便说一下,如果您阅读了菲尔丁关于 REST 的论文,那么在您还实现超媒体之前,您还不是完全 REST,但这是一个固执己见的主题。

于 2013-10-13T06:54:41.407 回答