2016-05-12 6 views
0

ユーザーが該当するすべてのフィールドに値を入力した場合に正常に動作する外部APIにGETリクエストを送信しています。私はこれらのフィールドのすべてをオプションにしたいと思いますが、最初に応答を得るためにはもちろんです。ユーザーが値を入力していない場合、クエリ変数をHTTP GET要求から除外するにはどうすればよいですか?

リクエストからこれらを無視する簡単な方法がありますか?

これらは、私はこれが全体として混乱が、その非常に簡単に見えるかもしれリクエストで要求

$query = $request->input('query'); 
    $include = $request->input('include'); 
    $include2 = $request->input('include2'); 
    $include3 = $request->input('include3'); 
    $exclude = $request->input('exclude'); 
    $exclude2 = $request->input('exclude2'); 

に渡すことになります変数です。ユーザは、基本成分をクエリとして入力し、包含または除外する特定の成分を入力することによって、それらのレシピ検索をさらに改良することができる。例えば、ユーザはこれだけで任意の助けのための2つの付属成分と1除外成分

$res = $client->get('http://api.yummly.com/v1/api/recipes?_app_id='MY_ID'&_app_key='MY_KEY'&q='.$query.'&allowedIngredient[]='.$include.'&allowedIngredient[]='.$include2.'&allowedIngredient[]='.$include3.'&excludedIngredient[]='.$exclude.'&excludedIngredient[]='.$exclude2.'&maxResult=50', ['auth' => ['user', 'pass']]); 
     $body = json_decode($res->getBody(), TRUE); 

感謝を入力した場合、私は、この要求を渡す方法を知っているように思います。

UPDATE-ANSWER

$res = 'http://api.yummly.com/v1/api/recipes?_app_id=MY_ID&_app_key=MY_KEY&q='.$query; 

     if($include) { 
     $res .= '&allowedIngredient[]='.$include; 
     } 

     if($include2) { 
     $res .= '&allowedIngredient[]='.$include2; 
     } 

     if($include3) { 
     $res .= '&allowedIngredient[]='.$include3; 
     } 

     if($exclude) { 
     $res .= '&excludedIngredient[]='.$exclude; 
     } 

     if($exclude2) { 
     $res .= '&excludedIngredient[]='.$exclude2; 
     } 

     $res .='&requirePictures=true&maxResult=50'; 
     $result = $client->get($res , ['auth' => ['user', 'pass']]); 
     $body = json_decode($result->getBody(), TRUE); 
+0

すべての '$ request-> input'でループを作成し、それに基づいてクエリを構築します。 –

答えて

1

最も簡単な方法は、単に有効な値をチェックすることです。

$apiUrl = 'http://api.yummly.com/v1/api/recipes?_app_id='MY_ID'&_app_key='MY_KEY'&q='.$query; 

if($include) { 
    $apiUrl .= '&allowedIngredient[]='.$include; 
} 

if($include2) { 
    $apiUrl .= '&allowedIngredient[]='.$include2; 
} 

// Etc for all vars 

また、アレイを構築し、それを内破によってそれを行うことができますが、キーは「$ allowedIngredientは[]」あなたはそのルートを調査できるようになる必要があるだろうと、これはかなり厄介になります。

+0

ありがとうNeil、それは今動作します。私は私の答えを編集して、あなたの例から何をしたのかを示します。 –

関連する問題