我正在设计.Net WebApi服务和AngularJS客户端。客户端的一个特定特征是用于特定类型资源的相当复杂的搜索引擎。搜索查询理想地在对象图中表示。我正在努力解决这样一个事实,即我在语义上应该将此请求作为GET请求发送到服务,并将搜索查询编码到url中。问题是查询字符串的数据太多了,我正在阅读的所有内容都让我相信我不应该在这样的情况下在GET请求中使用消息体。
我已经看过几次建议的解决方案,看起来有点笨拙,但至少在语义上是正确的:
如果我在服务中实现此api,仍然没有简单的方法来标记或链接到客户端中的搜索结果(因为如果查询在URL中合理表示,则整个问题不需要被问到)。
有没有更好的解决方案?
答案 0 :(得分:0)
您找到的解决方案实际上是一种处理此类事情的简单方法:
query
资源并存储在服务器上; query
的网址(您还没有执行)。我认为使用POST/Redirect/GET可以做得更好,因此可以将网址添加为书签; query
并返回结果; query
。现在,作为一项改进,您可以允许用户在创建时为query
提供友好名称(例如queryForXYZBlaWhatever
),并将其作为网址http://server/api/query/queryForXYZBlaWhatever
的一部分返回。这可以加入书签,共享,通过电子邮件发送,它总是指向相同的query
。