13. HTTP Request Parameters

Nekonote::Request is the class to manage HTTP Request Parameters such as form data, query string, URL path parameters.

Nekonote::Request Class

An object of Nekonote::Request class will be set to @request in Handler classes.

The following is the list of public instance methods which defined in Nekonote::Request class.

params Returns values by the given name from the POST data or the query string.
query_string Returns values by the given name from the query string.
post_data Returns values by given name from the POST data.
path_params Returns values by the given name from the URL path parameters.
payload Returns the payload as string.
json_payload Returns the payload as hash.
path Returns the request path.
uri Returns the request URI.
method Returns the HTTP request method.
valid_str? Checks if the value of given parameter name is valid string.
having? Checks if the value of given parameter name exist in the POST data or the query string.

params(name = nil)

Returns values by the given name from the POST data or the query string.

URL path parameters or payload can not be reference by this method.

When HTTP request method is GET this method finds the value from the query string, when POST from the POST data.

parameter type required description
name string or symbol no A parameter name to get.

Return Values

It returns hash when just calling @request.params. It return string when value found by the given parameter name when not returns nil.

query_string(name = nil)

This method is almost the same as params. The only deference is query_string tries to find the values from the query string.

post_data(name = nil)

This method is almost the same as params. The only deference is post_data tries to find the values from the POST data.

path_params(name = nil)

This method is almost the same as params. The only deference is that path_params tries to find the values from the URL path parameters.

payload

Returns the payload.

Return Values

It returns string. In case of there is not any payload it returns nil instead.

json_payload

Returns the payload as Hash object when the payload is valid json data.

Return Values

It returns hash when the payload is valid json data and succeeded parsing.

It returns nil when there is not any payload.

It returns false if unable to parse the payload as json.

path

Returns the request path.

Return Values

It returns string.

uri

Returns the request URI.

Return Values

It returns string.

method

Returns the HTTP request method.

Return Values

It returns string.

valid_str?(name)

Checks if the value of given parameter name is string and is not empty which in the POST data or the query string.

parameter type required description
name string or symbol yes A parameter name.

Return Values

It returns true when the type of inspected value is string and is not empty string. If not it returns false.

having?(name)

Checks if the value of given parameter name exist in the POST data or the query string.

parameter type required description
name string or symbol yes A parameter name.

Return Values

It returns true when the specified parameter exists in POST data or query string.

Getting Payload

When there is some request body in a request, you may reference it by json_payload.

preference/your_environment/route.yml

ExampleHandler:
    path: /example
    execute: index
    method: POST

handler/example.rb

class ExampleHandler < BaseHandler
    def example
        logwrite @request.json_payload
    end
end

When accessing http://example.com/example with POST method and with Content-Type: application/json header and with the request body below,

{
    "id": 2002,
    "name": "example",
    "type": 1
}

@request.json_payload returns {"id"=>2002, "name"=>"example", "type"=>1} in hash.

In order to reference payload which is not json data, please use @request.payload instead. It returns no parsed request body as json data.