REST:响应速度慢的用户界面?

REST:响应速度慢的用户界面?,rest,progress-bar,Rest,Progress Bar,我需要帮助为带有进度条的应用程序创建RESTful设计 想象一个应用程序,其中一个资源需要很长时间(1+分钟)才能响应HTTPGET(在我的例子中,我正在扫描网络以查找设备)。我希望客户端显示一个进度条,指示GET操作将需要多长时间,但为了使其正常工作,服务器需要向客户端提供操作的时间估计 如果操作缓慢: httpget/devices 什么是一种提供时间估计的RESTful方式?我认为我不能使用: HTTP头/设备 因为HEAD应该返回与GET减去body相同的值,这(我认为)意味着我必须运行

我需要帮助为带有进度条的应用程序创建RESTful设计

想象一个应用程序,其中一个资源需要很长时间(1+分钟)才能响应HTTPGET(在我的例子中,我正在扫描网络以查找设备)。我希望客户端显示一个进度条,指示GET操作将需要多长时间,但为了使其正常工作,服务器需要向客户端提供操作的时间估计

如果操作缓慢:

httpget/devices

什么是一种提供时间估计的RESTful方式?我认为我不能使用:

HTTP头/设备


因为
HEAD
应该返回与
GET
减去body相同的值,这(我认为)意味着我必须运行我试图避免的非常长的操作。有什么想法吗?

也许只是创建一个单独的“进度”资源

GET /progress/foo

再想一想,我想我会选择。根据本文,异步操作最好用HTTP202来表示

  • 客户端发送
    HTTP POST/devices
  • 服务器响应
    HTTP202已接受。位置:/queues/32194532
  • 引用该书: 异步操作现在正在进行中,客户端可以 向该URI发出GET请求以查看其运行情况,即获取当前状态 “工作”资源的一部分。一旦操作完成,任何结果都将可用 作为此资源的表示。一旦客户端读取完结果,它就可以 删除作业资源。客户端甚至可以通过以下方式取消操作: 过早地删除它的工作

  • 引用:当请求的进程仍处于挂起状态时,作业应返回
    200 OK
    。响应应描述流程的挂起状态
  • 引用:处理完成后,作业应返回创建的
    201
    。对于
    GET/PUT/POST
    的响应应该包含请求/创建/更新的资源的位置
  • 引用该书: 有一条皱纹。因为每个启动异步操作的请求都会 服务器创建一个新资源(如果只是临时资源),这样的请求既不安全也不安全 也不是幂等的。这意味着您不能使用GET生成异步操作, 删除,或(通常)放入。您可以使用的唯一HTTP方法仍然尊重 统一的接口是POST


  • 我不这样做的理由是,“因为它不是资源——它是假的”。假的?所以当你得到/person/1时,那是一个“真实”的人吗?同意-你可以把它作为一个单独的资源。例如,如果包含有关查询成本信息的资源位于/devices/queryinfo,则。。。。您可以在/devices pointing/devices/queryinfo中添加链接头。然后,客户可以选择从HEAD结果中获取链接,并在采取行动之前检查该行动的成本。这似乎是一种更好的方式,让客户能够按照自己的意愿检查状态(当然,服务器必须以某种方式更新该资源。对此问题的第一个回答可能也是一篇帖子。()