diff --git a/docs/http-requests.md b/docs/http-requests.md new file mode 100644 index 0000000..942bee1 --- /dev/null +++ b/docs/http-requests.md @@ -0,0 +1,40 @@ +# HTTP Requests + +You should use `env` variable to handle HTTP params. For both `get` and `post` (and others) methods, you should use `env` object. + +```ruby +# Matches /hello/kemal + get "/hello/:name" do |env| + name = env.params["name"] + "Hello back to #{name}" + end + + # Matches /resize?width=200&height=200 + get "/resize" do |env| + width = env.params["width"] + height = env.params["height"] + end + + # Easily access JSON payload from the params. + # The request content type needs to be application/json + # The payload + # {"name": "Serdar", "likes": ["Ruby", "Crystal"]} + post "/json_params" do |env| + name = env.params["name"] as String + likes = env.params["likes"] as Array + "#{name} likes #{likes.each.join(',')}" + end + + # Set the content as application/json and return JSON + get "/user.json" do |env| + kemal = {name: "Kemal", language: "Crystal"} + env.content_type = "application/json" + kemal.to_json + end + + # Add headers to your response + get "/headers" do |env| + env.add_header "Accept-Language", "tr" + env.add_header "Authorization", "Token 12345" + end +```