0

我有一个 Sinatra 应用程序,我想在其中获取客户端输入,如以下伪代码所示:

get '/foo' do
    "doing some stuff"
    foo = getInputFromClient
    foo
    "continuing to do more stuff"
    foo = getInputFromClient
    foo
    "done"
end

这是我想在客户端看到的输出:

curl http://127.0.0.1:4567/foo #start the request
doing some stuff
#Somehow submit "shoop" to Sinatra
shoop
continuing to do more stuff
#Somehow submit "woop" to Sinatra
woop
done

我不能把它分成两个 curl 调用。我该如何做到这一点?我不应该首先使用 Sinatra 吗?我必须切换到插座吗?

我已经阅读了这些看起来确实相关的其他 问题,我对他们所谈论的内容不够熟悉,看它是否适用于我。对我的案例的其他问题或对谷歌的一些关键字的简化将不胜感激。

4

1 回答 1

1

通常我们会写一些更像这样的东西:

get '/foo' do
  ...do something...
  "done doing foo"
end

get '/foo2' do
  ...do something...
  "done doing foo2"
end

get '/foo3' do
  ...do something...
  "done doing foo3"
end

客户端会看到这样的连接握手:

  1. 连接到/foo.
  2. 获得“完成 foo”响应。
  3. 连接到/foo2.
  4. 获得“完成 foo2”响应。
  5. 连接到/foo3.
  6. 获得“完成 foo3”响应。

客户端和服务器端都必须编写一些代码来处理逻辑。您不能在连接过程中将消息发送回 cURL,让它返回更多信息、请求更多数据并返回。这不是 cURL 的工作方式,也不是 HTTP 协议。

可以使用各种技术与浏览器来回交谈,但 cURL 不是浏览器。

于 2013-10-17T06:27:59.777 回答