ルーティング

花見アプリケーションが使用花見::ルータをルーティングするために:Ruby用ラック、互換性のある軽量かつ高速なHTTPルータを。

入門

あなたのお気に入りのエディタが開いた状態でapps/web/config/routes.rb、次の行を追加します。

get '/hello', to: ->(env) { [200, {}, ['Hello from Hanami!']] }

その後でサーバを起動bundle exec hanami serverし、訪問のhttpを:// localhostを:2300 /こんにちは。あなたは見るべきHello from Hanami!ブラウザで。

我々は単に何をしたかを説明しましょう。私たちは、作成したルートを、アプリケーションは多くのルートを持つことができます。各ルートで始まるHTTP動詞、宣言get我々の場合には。その後、我々は(相対URIを指定して/hello、私たちのために)、着信要求に応答する責任があるオブジェクト。

私たちは、最も一般的なHTTP動詞を使用することができますGETPOSTPUTPATCHDELETETRACEOPTIONS

endpoint = ->(env) { [200, {}, ['Hello from Hanami!']] }

get     '/hello', to: endpoint
post    '/hello', to: endpoint
put     '/hello', to: endpoint
patch   '/hello', to: endpoint
delete  '/hello', to: endpoint
trace   '/hello', to: endpoint
options '/hello', to: endpoint

 

行動

フルラックの統合は素晴らしいですが、私たちは私たちのWebアプリケーションで使用します最も一般的なエンドポイントがあるアクション。アクションは、着信HTTP要求に応答する責任オブジェクトです。彼らはのようなネストされたネーミングを持っていますWeb::Controllers::Home::Index。これは花見が持っている理由です、書き込みには本当に長い名前で命名規則それのために:"home#index"

# apps/web/config/routes.rb
root to: "home#index" # => will route to Web::Controllers::Home::Index

最初のトークンは、コントローラの名前である"home"に変換されますHome。同じ変換が後の名前に適用されます#"index"Index

花見は(名前空間を把握することが可能であるWeb::Controllers)と、完全なクラス名を構成します。

 

ラック

花見はと互換性のあるラックSPEC、およびので、私たちが使用するエンドポイントは、同様に準拠している必要があります。我々上記の例で使用されProc、当社の要件を当てはめたことを。

有効なエンドポイントは、オブジェクト、クラス、アクション、またはことができるアプリケーションに応答します#call

get '/proc',       to: ->(env) { [200, {}, ['Hello from Hanami!']] }
get '/action',     to: "home#index"
get '/middleware', to: Middleware
get '/rack-app',   to: RackApp.new
get '/rails',      to: ActionControllerSubclass.action(:new)

私たちは、文字列を使用すると、それはそれからクラスをインスタンス化しようとします:

get '/rack-app', to: 'rack_app' # it will map to RackApp.new

 

マウントアプリケーション

我々はアプリケーションをマウントしたい場合は、我々は使うべきmount花見環境設定ファイル内。グローバルコンフィギュレーションファイルは次の場所にありますconfig/environment.rb。置きmountHanami.configureブロック内。

Hanami.configure do
  mount Web::Application, at: '/'
  mount OtherApplication.new, at: '/other'

  ...
end

 

パスへの取り付け

mount SinatraApp.new, at: '/sinatra'

すべてのHTTPリクエストで始まる/sinatraにルーティングされますSinatraApp

 

サブドメインへの実装

mount Blog.new, host: 'blog'

全てのHTTPリクエストhttp://blog.example.comにルーティングされますBlog

開発では、アクセスすることができなくなりますhttp://blog.localhost:2300ので、サーバーを実行しているときに、ホストを指定する必要があります
bundle exec hanami server --host=lvh.me。次に、あなたのアプリケーションがで訪問することができますhttp://blog.lvh.me:2300