ruby Kann nicht Webanwendungs-Framework

Sinatra request.body.read kann nur einmal gelesen werden Problem

Dieser Artikel stellt die Lösung für das Problem vor, dass sinatra request.body.read nur einmal gelesen werden kann. Ich verstehe es nicht ganz, aber <code>request.body.read</code> kann den Body einer POST-Anfrage abrufen, aber er kann nur einmal abgerufen werden. (Unten)

Shou Arisaka
1 Min. Lesezeit
29. Sept. 2025

Dieser Artikel stellt die Lösung für das Problem vor, dass sinatra request.body.read nur einmal gelesen werden kann.

Ich verstehe es nicht ganz, aber request.body.read kann den Body einer POST-Anfrage abrufen, aber er kann nur einmal abgerufen werden. (Unten)

require "sinatra"
require "open3"
require 'json'
require 'pry'

post "/androidsms" do

    binding.pry

end
yuis ASUS /mnt/c/pg/ruby_dev$ cat Gemfile.lock | ag sinatra
    sinatra (2.0.5)
  sinatra
[1] pry(#<Sinatra::Application>)> @body = request.body.read
=> "{ \"ContactName\": \"Fumiya\", \"Text\": \"X\", \"OccurredAt\": \"April 21, 2019 at 03:47AM\", \"FromNumber\": \"07044080062\" }"
[2] pry(#<Sinatra::Application>)> request.body.read
=> ""

Image

Hmm, ich weiß nicht, ob es spezifisches Verhalten für serverseitige Dinge wie Sinatra ist (oder ob es nur ein simpler Bug ist), Ruby-spezifisches Verhalten oder etwas Weitverbreitetes, aber solche Dinge passieren. Ich konnte bei der Suche nichts dergleichen finden, also habe ich keine Ahnung über die Ursache, aber geben Sie mir jedenfalls meine 2 Stunden zurück.

Wenn es ein Objekt gibt, das sich so verhält, würde ich mich freuen, wenn mir jemand, der den Namen oder dergleichen kennt, es beibringen könnte.

Diesen Artikel teilen

Shou Arisaka 29. Sept. 2025

🔗 Links kopieren