2018年1月21日日曜日

Sinatra でリクエストヘッダを取得する方法

概要

ボディやクエリストリングは params で取得できます
ヘッダは少し変わった方法でアクセスするのでやり方を紹介します

環境

  • macOS 10.13.2
  • Ruby 2.4.1p111
  • Sinatra 2.0.0

取得方法

  • vim app.rb
require 'sinatra'

get '/' do
  headers = request.env.select { |k, v| k.start_with?('HTTP_') }
  headers.each do |k, v|
    puts "#{k} -> #{v}"
  end
  'ok'
end

こんな感じです
request.env にいろいろと突っ込まれておりその中の HTTP_ から始まる変数がヘッダ情報になります
試しにこれで動かしてヘッダを適当に付与してみると付与したヘッダが出力されると思います

もともとは Sinatra は Rack ベースで作られているのでそれの Rack::Request を使って取得している感じです

0 件のコメント:

コメントを投稿