如果用户未输入值,如何从 HTTP GET 请求中排除查询变量?
How do I exclude a query variable from a HTTP GET request if the user hasn't inputted a value?
我正在向外部 API 发送 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');
这个请求从整体上看可能有些混乱,但其实很简单。用户可以输入基本成分作为查询,并通过输入要包含或排除的特定成分进一步细化他们的食谱搜索。我想知道如果用户只输入了两种包含的成分和一种排除的成分,如何传递这个请求
$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);
非常感谢您对此提供的任何帮助。
更新答案
$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);
最简单的方法是检查有效值。
$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[]”,因此您可以调查该路线。
我正在向外部 API 发送 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');
这个请求从整体上看可能有些混乱,但其实很简单。用户可以输入基本成分作为查询,并通过输入要包含或排除的特定成分进一步细化他们的食谱搜索。我想知道如果用户只输入了两种包含的成分和一种排除的成分,如何传递这个请求
$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);
非常感谢您对此提供的任何帮助。
更新答案
$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);
最简单的方法是检查有效值。
$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[]”,因此您可以调查该路线。