webapi中的Restful查询签名



我对REST的理解是,任何不改变底层系统状态的东西(例如查询)都应该是GET请求。这也意味着查询参数必须像这样放入URI中:

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

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

REST API最佳实践:如何接受参数值列表作为输入

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

如果向量确实大到足以开始担心,您应该考虑将其从查询参数中移出,并将其表示为RESTful资源。

例如,创建一个集合:

api/Vector

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

这大大减少了查询长度的大小,遵守REST,并允许这些向量很容易被重用。如果您担心存储空间,您可以在30分钟或更长时间后过期vector。

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

最新更新