Tüm gelen istekleri, uygulamanın verileri aldığı şekilde bir Sinatra uygulamasına dökmenin bir yolu var mı? Belki bir çeşit Rack ara katman yazılımı? Ben 'şeyler' debug istediğinizdeSinatra içinden bir HTTP isteği nasıl dökülür?
21
A
cevap
47
Ben -D
ve -V
bayraklarıyla ince çalıştırın:
$ thin start -p 3000 -R config.ru -D -V
-D, --debug Set debbuging on
-V, --trace Set tracing on (log raw request/response)
Eğer bir istek ham çıktı almak gibi istek yöntemini kullanmaya çalışıyorsanız:
# app running on http://example.com/example
get '/foo' do
request.body # request body sent by the client (see below)
request.scheme # "http"
request.script_name # "/example"
request.path_info # "/foo"
request.port # 80
request.request_method # "GET"
request.query_string # ""
request.content_length # length of request.body
request.media_type # media type of request.body
request.host # "example.com"
request.get? # true (similar methods for other verbs)
request.form_data? # false
request["SOME_HEADER"] # value of SOME_HEADER header
request.referer # the referer of the client or '/'
request.user_agent # user agent (used by :agent condition)
request.cookies # hash of browser cookies
request.xhr? # is this an ajax request?
request.url # "http://example.com/example/foo"
request.path # "/example/foo"
request.ip # client IP address
request.secure? # false
request.env # raw env hash handed in by Rack
end
Daha fazla bilgi için bkz. "GETTING STARTED".
17
Belki de bu sizin sorduğunuz şey değil, ancak buraya, Sinatra'daki tüm HTTP istek başlıklarını görmenin bir yolunu aramaya geldim (aslında onları sorgulamak zorunda kalmadan, bir proxy isteğini ayıklamak zorunda kalmadan). Oldukça kullanışlı buldum:
get "/my_route" do
puts "#{ request.env }"
end
Veya, bir okunaklı json formatında cevaben o damla döndürmek için: işte
require 'json'
get "/my_route" do
content_type :text
return JSON.pretty_generate(request.env)
end
Ve tüm istek ayrıntıları:
{
"SERVER_SOFTWARE": "thin 1.6.2 codename Doc Brown",
"SERVER_NAME": "10.0.1.3",
"rack.input": "#<StringIO:0x00000002bf82c0>",
"rack.version": [
1,
0
],
"rack.errors": "#<IO:0x00000002549b90>",
"rack.multithread": false,
"rack.multiprocess": false,
"rack.run_once": false,
"REQUEST_METHOD": "GET",
"REQUEST_PATH": "/my_route",
"PATH_INFO": "/my_route",
"REQUEST_URI": "/my_route",
"HTTP_VERSION": "HTTP/1.0",
"HTTP_X_FORWARDED_FOR": "10.0.1.3, 127.0.0.1, 127.0.0.1, 127.0.0.1",
"HTTP_HOST": "10.0.1.3:9393",
"HTTP_CONNECTION": "close",
"HTTP_X_REAL_IP": "10.0.1.3",
"HTTP_X_FE_SCHEME": "http",
"HTTP_X_FE_HOST": "10.0.10.145",
"HTTP_X_FE_ROUTE": "/my_route",
"HTTP_ACCEPT": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"HTTP_USER_AGENT": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36",
"HTTP_ACCEPT_LANGUAGE": "en-US,en;q=0.8",
"HTTP_X_VARNISH": "917254702",
"HTTP_ACCEPT_ENCODING": "gzip",
"GATEWAY_INTERFACE": "CGI/1.2",
"SERVER_PORT": "9393",
"QUERY_STRING": "",
"SERVER_PROTOCOL": "HTTP/1.1",
"rack.url_scheme": "http",
"SCRIPT_NAME": "",
"REMOTE_ADDR": "10.0.10.145",
"async.callback": "#<Method: Thin::Connection#post_process>",
"async.close": "#<EventMachine::DefaultDeferrable:0x00000002a60070>",
"rack.logger": "#<Rack::NullLogger:0x00000004154ad8>",
"rack.request.query_string": "",
"rack.request.query_hash": {
},
"sinatra.route": "GET (?-mix:^\\/my_route$)"
}
İlgili konular
- 1. Node.js ile http isteği içinden harici API'ye görüntü nasıl görüntülenir
- 2. sinatra ve http
- 3. Sinatra OPSİYONLARI HTTP Verb
- 4. Bir $ http isteği devamı
- 5. Enemler nasıl dökülür?
- 6. Bir node.js http isteği nasıl bitmeli
- 7. Konsolda http isteği nasıl yazdırılır
- 8. Bir ASP.NET HTTP İsteği Yapılıyor?
- 9. apache http istemci isteği
- 10. Semboller bir .a dosyasında nasıl dökülür
- 11. Nesne kendi sınıfına nasıl dökülür?
- 12. Nesne gerçek türüne nasıl dökülür?
- 13. UserAgent öğesini http isteği
- 14. Async paralel HTTP isteği
- 15. Kopyalama HTTP isteği inputStream
- 16. Http isteği kullanarak Alamofire
- 17. Açısal 4, http isteği
- 18. Proses ham HTTP isteği
- 19. Engellenmeyen http isteği döngü
- 20. bir node.js sunucu uygulaması içinden bir GET isteği yapın ve
- 21. HTTP isteği node.js kullanarak mikeal 'isteği'
- 22. Sinatra
- 23. Powershell'de HTTP Post/GET isteği nasıl oluşturulur?
- 24. LWP kullanarak HTTP PUT isteği nasıl yapılır?
- 25. .NET'te eşzamanlı HTTP isteği darboğazı nasıl belirlenir?
- 26. http isteği için birim testi nasıl yazılır?
- 27. Yay kullanarak HTTP posta isteği nasıl gönderilir?
- 28. C++ ve HTTP kodu kullanarak HTTP GET isteği nasıl kullanılır?
- 29. Bir çerezle birlikte bir HTTP İstemci İsteği nasıl oluşturabilirim?
- 30. Bir HTTP isteği döndüren hata başarısız oldu
ben bir günlük dosyasına olduğu gibi her HTTP isteğini dump 'em-proxy' kullanarak bir vekil oluşturdu. – t6d
cool, harika bir seçenek sunuyor. kodunuzu gönderir misiniz Bunu öğrenmek istiyorum: D – include
'config.ru' nerede? – evandrix