restful 在 webapi 中查询签名
restful query signature in webapi
我对 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 吗?谢谢。
如果向量真的大到足以开始担心,您应该真正考虑将其移出查询参数并将其表示为 RESTful 资源。
例如,在以下位置创建一个集合:
api/Vector
然后您的 API 客户可以 POST
他们的大向量,然后在另一个请求中通过单个 ID 号引用它。
这大大减少了查询长度,遵守 REST,并允许轻松地重用这些向量。如果您担心存储问题,您可以在 30 分钟或更长时间后使向量过期。
另一种选择是走 JSON-LD 这条路,这条路很相似,只是你不托管向量。您只需提供一个 @context
对象,API 客户端将在他们自己的服务器上托管该矢量,并通过 URL 在查询参数中将其引用到您的 API。
我对 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 吗?谢谢。
如果向量真的大到足以开始担心,您应该真正考虑将其移出查询参数并将其表示为 RESTful 资源。
例如,在以下位置创建一个集合:
api/Vector
然后您的 API 客户可以 POST
他们的大向量,然后在另一个请求中通过单个 ID 号引用它。
这大大减少了查询长度,遵守 REST,并允许轻松地重用这些向量。如果您担心存储问题,您可以在 30 分钟或更长时间后使向量过期。
另一种选择是走 JSON-LD 这条路,这条路很相似,只是你不托管向量。您只需提供一个 @context
对象,API 客户端将在他们自己的服务器上托管该矢量,并通过 URL 在查询参数中将其引用到您的 API。