У меня есть простой контроллер, который использует API (OpenWeatherMap) с жужжанием и генерирует запрос на получение при входе. Однако я бы хотел, чтобы мой параметр почтового индекса не был жестко закодирован в кодовой базе, но мог быть динамическим и мог вызываться через URL-адрес. См. Ссылочный код.
Контроллер
<?php
namespace App\Http\Controllers;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
class GuzzleController extends Controller
{
public function index()
{
try {
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'http://api.openweathermap.org/data/2.5/',
]);
$response = $client->request('GET', 'forecast', [
'query' => [
'zip' => '32811',
'country code' => 'us',
'APPID' => '02f129190a8736e107260eadce1d781e'
],
]);
if ($response->getStatusCode() == 200) {
return $response->getBody()->getContents();
}
} catch(Exception $e) {
echo "Error: " . $e->getMessage();
}
}
}
Маршрут
Route::get('forecast', 'GuzzleController@index');






Для этого есть два пути.
URL: app.tld/forecast?zip=32811
Ваш контроллер:
public function index(Request $request)
{
...
$response = $client->request('GET', 'forecast', [
'query' => [
'zip' => $request->input('zip'),
'country code' => 'us',
'APPID' => '02f129190a8736e107260eadce1d781e'
],
]);
...
}
URL: app.tld/forecast/32811 (32811 - почтовый индекс)
Ваш маршрут:
Route::get('forecast/{zip}', 'GuzzleController@index');
Ваш контроллер:
public function index(string $zip)
{
...
$response = $client->request('GET', 'forecast', [
'query' => [
'zip' => $zip,
'country code' => 'us',
'APPID' => '02f129190a8736e107260eadce1d781e'
],
]);
...
}
Большое спасибо, оба метода работают! На самом деле я собираюсь воспользоваться этой логикой и создать пакет композитора, который может быть втянут, и любой может использовать его. Но просто делаю что-то, чтобы опираться на свое резюме