webapi中的restful查询签名

时间:2015-10-24 10:40:15

标签: rest http asp.net-web-api restful-url

我对REST的理解是,任何不会将状态更改为底层系统(例如查询)的内容都应该是GET请求。这也意味着必须将查询参数放入URI中,如下所示:

api/SomeMethod/Parameter1/{P1:double}/Parameter2/{P1:double}

或作为此处讨论的查询字符串:

REST API Best practice: How to accept list of parameter values as input

有时查询可能需要一个冗长的向量(x / y点的数量)。如何在这里克服URI的长度问题?我应该只使用POST吗?谢谢。

1 个答案:

答案 0 :(得分:1)

如果向量确实足够大以至于开始担心你应该考虑将其移出查询参数并将其表示为RESTful资源。

例如,在以下位置创建一个集合:

api/Vector

然后您的API客户端可以POST他们的大向量,然后在另一个请求中通过一个ID号引用它。

这大大减少了查询长度的大小,遵守REST,并允许轻松地重用这些向量。如果您担心存储,您可以在30分钟或更长时间后使矢量失效。

另一个选择是沿着JSON-LD路走下去,除了你没有托管矢量之外。您只需提供一个@context对象,API客户端将在自己的服务器上托管该向量,并通过查询参数中的URL将其引用到您的API。