【问题标题】:restful query signature in webapiwebapi中的宁静查询签名
【发布时间】:2016-01-23 20:53:08
【问题描述】:

我对 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 吗?谢谢。

【问题讨论】:

  • 您是否担心查询字符串的限制?
  • 是的,我是。据我所知,限制是大约 2000 个字符。
  • 根据this 它应该比 IIS 更多,并且还可以配置。您也可以根据自己的需要尝试配置:forums.asp.net/t/…

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


【解决方案1】:

如果向量真的大到开始担心你应该真正考虑将其移出查询参数并将其表示为 RESTful 资源。

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

api/Vector

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

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

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

【讨论】:

  • 是有道理的,但在我想比较大“向量”的场景中却没有。例如大向量,是否已经存在至少一个 90% 相似的向量...
  • 那么为什么没有一个端点,它接受向量 3,向量 4,并返回 80% 或其他东西?
  • 当你说“接受”时,你的意思是 POST 吗?要求是一个向量不被持久化....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2011-07-21
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多