2016-10-13 13 views
1

リクエストのContent Typeヘッダーがapplication/jsonであることを確認したいのですが、Slimフレームワークでどうすればいいですか?PHP Slimリクエストがapplication/jsonかどうかをチェックする方法

これは有効ではありません。

$contentType = $app->request->getContentType(); 
if(strtolower($contentType)!="application/json") 
      throw new AppException("Request must have application/json content type"); 

コンテンツタイプが文字セット情報を含めることができるというように...

+1

strtolowerを適用したあなただけの 'アプリケーション/ json'サブストリングの有無をチェックしないのはなぜそのヘッダーに? –

+0

これが十分かどうかは分かりませんでした – Tobia

答えて

1

あなたはヘッダを検査の代わりに、短いカット

$cType = $app->request->headers('Content-Type'); 
if (strpos('application/json', $cType) !== false) { 
    //is json 
} 
を使用することができますので、
+1

'strpos'の引数が入れ替わっていることを確かめてください。 'application/json'の' $ cType'を検索したいのですが、それ以外の方法はありません。メソッドは 'application/json; charset = UTF-8'で失敗します。リファレンス:http://php.net/manual/en/function.strpos.php –

0

あらゆる状況で動いている解決策を探している人にとっては、Illya Moskvinは正しかったです。議論はgeggletoの回答で切り替わります。ここ はコードの例です:

$contentType = $request->getContentType(); 
if (strpos($contentType, 'application/json') !== false) { 
    //is json 
} 

あなたが代わりにstriposを使用することができ、大文字と小文字を区別しないのですが、あまりパフォーマンスや$contentType

関連する問題