How to dump an HTTP request from within Sinatra?

后端 未结 2 1980
-上瘾入骨i
-上瘾入骨i 2020-12-23 12:08

Is there a way to dump all incoming requests to a Sinatra application in the exact way the application receives the data? Maybe some sort of Rack middleware?

2条回答
  •  轮回少年
    2020-12-23 13:02

    I run thin with the -D and -V flags when I want to debug 'things':

    $ thin start -p 3000 -R config.ru -D -V
    
    -D, --debug                      Set debbuging on
    -V, --trace                      Set tracing on (log raw request/response)
    

    If you are trying to get the raw output from a request, use the request method like:

      # 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
    

    See "GETTING STARTED" for more information.

提交回复
热议问题