如何将 Get 请求发送到具有复杂参数的 WCF 服务

本文关键字:复杂 参数 服务 WCF Get 请求 | 更新日期: 2023-09-27 18:34:56

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

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

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

请注意,我在WCF方面没有太多经验,如果我错过了一些明显的东西,请道歉。

如何将 Get 请求发送到具有复杂参数的 WCF 服务

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

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

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

使用发布到该终结点,即复杂查询。确实,它没有遵循休息字母,但它离使用 https 动词更近了一步,没有人应该为此敲打你。

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

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