

# 質問

grapeを使ってAPIを作成しています.  
(ruby on railsやsinatoraなどの他のフレームワークは使っていません.grape単体です.)

requestのhttp headerのcontent-typeをチェックし,値が「application/x-www-form-
urlencoded」かどうかで  
処理を切り分けたいのですが,やり方がわかりません.

# 試したこと

headers['Content-Type']では値を取得できませんでした.

# 補足

rackの仕組みを使っての解決策(「config.ruにこう書けばできる」)でも結構です.


CC BY-SA 3.0
2016-10-07T05:41:24.633
29408
2016-10-07T10:48:25.440
19052
question
ruby grape rack
grapeでのContent-Typeでの処理の切り分け方を教えてください


自己解決しました.

[code]

    class MyRackMiddleware
    
      def initialize(app)
        @app=app
     end
    
      def call(env)
         unless env["CONTENT_TYPE"]=='application/x-www-form-urlencoded'
           raise
         end
        @app.call(env)
      end
    
    end
    
[/code]

↑こんな感じでmiddlewareを作成してconfig.ruの中で呼び出せば行けました.

[code]

    use MyRackMiddleware
    run  API
    
[/code]


CC BY-SA 3.0
2016-10-07T10:48:25.440
29417
2016-10-07T10:48:25.440
19052
29408
answer