Передача параметра API в url-адрес laravel / guzzle

У меня есть простой контроллер, который использует 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');
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
2 439
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого есть два пути.

  1. С параметром строки запроса

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'
        ],
    ]);

    ...
}
  1. С более красивыми URL-адресами:

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'
        ],
    ]);

    ...
}

Большое спасибо, оба метода работают! На самом деле я собираюсь воспользоваться этой логикой и создать пакет композитора, который может быть втянут, и любой может использовать его. Но просто делаю что-то, чтобы опираться на свое резюме

Keith Roye 10.10.2018 16:39

Другие вопросы по теме