作为REST服务的一部分,我需要实现搜索调用.基本思想是用户可以发布新搜索,并获取结果:
POST http://localhost/api/search
GET http://localhost/api/search?id=123
Run Code Online (Sandbox Code Playgroud)
但是,我的搜索可能会运行几分钟,并返回部分结果,直到完成为止.也就是说,GET-Request会返回如下内容:
status: running
results: a, b, c.
Run Code Online (Sandbox Code Playgroud)
而下一个GET-Request可能会返回
status: completed
results: a, b, c, d, e.
Run Code Online (Sandbox Code Playgroud)
这与RESTful GET请求的语义相矛盾.多次调用时,请求应始终返回相同的结果.例如,当用户使用高速缓存代理时,可能永远不会将完整结果传递给用户.
问题:有没有办法为部分结果的长时间运行搜索提供真正的RESTful实现?
我有一个Web应用程序,它使用Ajax请求不断轮询来自服务器的数据.我想使用zombie.js为它实现集成测试.
我要做的是等到Ajax轮询循环从服务器接收数据.数据应在20秒后收到,因此我browser.wait(done, callback)用来检查数据是否存在,并设置waitFor为最大超时一分钟.
但是,browser.wait()即使我的done回调返回false ,它也会立即返回.
在zombie API文档中,我阅读了以下内容browser.wait():
...它不能永远等待,特别是对于可能反复触发的定时器(例如检查页面状态,长轮询).
我想这就是我看到的行为的原因,但我真的不明白发生了什么.为什么我不能等待一分钟,直到我的轮询循环从服务器接收数据?为什么不能browser.wait()等待可能反复发射的计时器?我需要做些什么来实施我的测试?