ruby - Ruby自制服务器解析POST请求体

标签 ruby sockets post request webserver

我正在编写模拟 Ruby 服务器来测试 API 组件。我发送一个带有正文的 POST 请求,我希望我的模拟服务器返回该 POST 请求的正文。目前我有这段代码:

require 'socket'

webserver = TCPServer.new('127.0.0.1', 7125)
loop do
  session = webserver.accept
  session.print "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n"
  request = session.gets
  session.puts request
  session.close
end

正文 FOO 的 POST 请求返回正文仅包含 POST/HTTP/1.1 的响应如何修复?

最佳答案

编写您自己的 HTTP 服务器确实会给您带来麻烦,因为该规范虽然表面上很简单,但有许多细微差别可能会误导您。在这种情况下,您正在读取带有 gets 的一行并忽略提交的大部分内容。您将不得不通过读取并正确解码发布的数据来解决这个问题。

对于具有熟悉界面的内容,您可以从 Net::HTTP::Server 开始相反。

关于ruby - Ruby自制服务器解析POST请求体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626224/

相关文章:

c++ - 使用套接字与 C++ 中的守护进程交互

android - 使用 Android 提交到 Google 电子表格表单

c++ - 已接受 TCP 连接,但写入数据会导致它使用失效连接

Java TCP 套接字 : data transfer is slow

ruby - 为什么 IO#seek 不适用于 TCPSocket?

mysql - 使用 JOIN 访问现有数据库的表

php - 为什么 php5-fpm 发布请求很慢,而相同的 php-cli 代码/控制台 curl 工作得非常快?

javascript - 如何在不使用任何模板引擎的情况下在 HTML 页面上显示帖子数据?

arrays - 从 Ruby 中没有 nil 值的变量创建数组

ruby-on-rails - Cron 作业不执行命令