slogan3

description

Met deze prompt kun je snel en veilig externe API's koppelen aan je Laravel backend, waardoor je gemakkelijk data kunt uitwisselen met andere systemen. Dit bespaart ontwikkeltijd, voorkomt veelvoorkomende beveiligingsfouten en zorgt dat je direct praktische voorbeelden krijgt die aansluiten op jouw specifieke use case. Beter dan algemene tutorials omdat het advies volledig is afgestemd op jouw behoeften, inclusief de beste tools en beveiligingsmethoden.

prompt

Help mij een externe API te integreren in mijn Laravel applicatie voor het ophalen of verzenden van gegevens. De externe API die ik wil integreren: <beschrijf de externe API of geef de API-documentatie URL>. Mijn gewenste use case of functiona ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze handleiding om de OpenWeatherMap API te integreren in je Laravel-applicatie voor het ophalen van actuele temperatuur en weersvoorspellingen. 1. API-sleutel verkrijgen - Maak een account aan op https://openweathermap.org/api - Genereer je API-sleutel (API key) 2. API sleutel veilig opslaan - Voeg je API-sleutel toe aan je `.env`-bestand: ```env OPENWEATHER_API_KEY=je_api_sleutel ``` 3. HTTP-client configureren - Laravel biedt de ingebouwde HTTP-client gebaseerd op Guzzle. Gebruik deze voor veilige en eenvoudige HTTP-verzoeken. - Geen extra pakketten nodig, tenzij je meer geavanceerde functies wilt. 4. Een serviceklasse maken voor de API-aanroepen - Maak bijvoorbeeld een nieuwe klasse `WeatherService`: ```php <?php namespace App\Services; use Illuminate\Support\Facades\Http; class WeatherService { protected $apiKey; protected $baseUrl = 'https://api.openweathermap.org/data/2.5'; public function __construct() { $this->apiKey = env('OPENWEATHER_API_KEY'); } public function getCurrentWeather($city) { $response = Http::get($this->baseUrl . '/weather', [ 'q' => $city, 'appid' => $this->apiKey, 'units' => 'metric', // voor Celsius 'lang' => 'nl', // indien gewenst ]); if ($response->successful()) { return $response->json(); } // Handeling van fouten return null; } } ``` 5. Gebruik de service in je controller - Injecteer de service of maak een instantie aan: ```php use App\Services\WeatherService; public function showWeather($city) { $weatherService = new WeatherService(); $weather = $weatherService->getCurrentWeather($city); if ($weather) { $temp = $weather['main']['temp']; $description = $weather['weather'][0]['description']; return view('weer', compact('city', 'temp', 'description')); } else { return back()->with('error', 'Weergegevens niet kunnen ophalen.'); } } ``` 6. Beveiliging en best practices - Gebruik `.env` om je API-sleutel te beschermen. - Voeg eventueel rate limiting toe om misbruik te voorkomen. - Controleer de API-respons op fouten en behandel deze correct. - Beperk de toegangsrechten tot je API-sleutel indien mogelijk via API-beheer van OpenWeatherMap. 7. Voorbeeld van een API-verzoek ``` GET https://api.openweathermap.org/data/2.5/weather?q=Amsterdam&appid=je_api_sleutel&units=metric&lang=nl ``` 8. Voorbeeld van een antwoord ```json { "coord": {"lon":4.8952,"lat":52.3702}, "weather": [{"id":800,"main":"Clear","description":"Heldere hemel","icon":"01d"}], "base": "stations", "main": { "temp": 15.5, "feels_like": 14.0, "temp_min": 14.0, "temp_max": 17.0, "pressure": 1012, "humidity": 55 }, ... } ``` Door deze stappen te volgen integreer je veilig en efficiënt de OpenWeatherMap API in je Laravel applicatie.
provider: deepseek
model: deepseek-chat
Zeker, ik help je graag de OpenWeatherMap API te integreren in je Laravel applicatie. Hier is een stapsgewijze handleiding: ## 1. Vereisten en installatie Eerst installeer je een HTTP-client. Ik raad **Guzzle** aan (standaard in Laravel): ```bash composer require guzzlehttp/guzzle ``` ## 2. API-sleutel aanvragen en configureren Registreer bij OpenWeatherMap voor een gratis API-sleutel en voeg deze toe aan je `.env`: ```env OPENWEATHER_API_KEY=je_api_sleutel_hier OPENWEATHER_BASE_URL=https://api.openweathermap.org/data/2.5 ``` Voeg deze toe in `config/services.php`: ```php 'openweather' => [ 'api_key' => env('OPENWEATHER_API_KEY'), 'base_url' => env('OPENWEATHER_BASE_URL'), ], ``` ## 3. Veilige verbinding maken Gebruik HTTPS en valideer SSL-certificaten: ```php use Illuminate\Support\Facades\Http; $response = Http::withOptions([ 'verify' => true, // SSL-verificatie inschakelen 'timeout' => 30, // Timeout instellen ])->get($url); ``` ## 4. Service klasse aanmaken Maak een service class voor weergerelateerde logica: ```bash php artisan make:service WeatherService ``` ```php <?php // app/Services/WeatherService.php namespace App\Services; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class WeatherService { protected $apiKey; protected $baseUrl; public function __construct() { $this->apiKey = config('services.openweather.api_key'); $this->baseUrl = config('services.openweather.base_url'); } public function getCurrentWeather(string $city) { try { $response = Http::withOptions(['verify' => true]) ->timeout(30) ->get("{$this->baseUrl}/weather", [ 'q' => $city, 'appid' => $this->apiKey, 'units' => 'metric', // Celsius 'lang' => 'nl' // Nederlandse beschrijvingen ]); if ($response->successful()) { return $response->json(); } Log::error('Weather API error: ' . $response->body()); return null; } catch (\Exception $e) { Log::error('Weather service error: ' . $e->getMessage()); return null; } } public function getWeatherForecast(string $city) { try { $response = Http::withOptions(['verify' => true]) ->timeout(30) ->get("{$this->baseUrl}/forecast", [ 'q' => $city, 'appid' => $this->apiKey, 'units' => 'metric', 'lang' => 'nl' ]); return $response->successful() ? $response->json() : null; } catch (\Exception $e) { Log::error('Forecast service error: ' . $e->getMessage()); return null; } } } ``` ## 5. Controller aanmaken ```bash php artisan make:controller WeatherController ``` ```php <?php // app/Http/Controllers/WeatherController.php namespace App\Http\Controllers; use App\Services\WeatherService; use Illuminate\Http\Request; class WeatherController extends Controller { protected $weatherService; public function __construct(WeatherService $weatherService) { $this->weatherService = $weatherService; } public function showWeather(Request $request, string $city) { $weatherData = $this->weatherService->getCurrentWeather($city); if (!$weatherData) { return response()->json([ 'error' => 'Kon weerdata niet ophalen' ], 500); } // Verwerk en formatteer de data return response()->json([ 'stad' => $weatherData['name'], 'temperatuur' => $weatherData['main']['temp'] . '°C', 'beschrijving' => $weatherData['weather'][0]['description'], 'vochtigheid' => $weatherData['main']['humidity'] . '%', 'windsnelheid' => $weatherData['wind']['speed'] . ' m/s' ]); } public function showForecast(Request $request, string $city) { $forecastData = $this->weatherService->getWeatherForecast($city); if (!$forecastData) { return response()->json(['error' => 'Kon voorspelling niet ophalen'], 500); } // Verwerk de 5-daagse voorspelling $forecast = array_map(function($item) { return [ 'datum' => date('d-m-Y H:i', $item['dt']), 'temperatuur' => $item['main']['temp'] . '°C', 'beschrijving' => $item['weather'][0]['description'] ]; }, array_slice($forecastData['list'], 0, 5)); return response()->json($forecast); } } ``` ## 6. Routes toevoegen In `routes/web.php`: ```php Route::get('/weather/{city}', [WeatherController::class, 'showWeather']); Route::get('/forecast/{city}', [WeatherController::class, 'showForecast']); ``` ## 7. Gebruik in Blade view ```php // In je controller public function showWeatherPage(string $city) { $weatherData = $this->weatherService->getCurrentWeather($city); return view('weather', compact('weatherData')); } ``` ```blade {{-- resources/views/weather.blade.php --}} @if($weatherData) <div class="weather-card"> <h2>Weer in {{ $weatherData['name'] }}</h2> <p>Temperatuur: {{ $weatherData['main']['temp'] }}°C</p> <p>{{ ucfirst($weatherData['weather'][0]['description']) }}</p> <p>Vochtigheid: {{ $weatherData['main']['humidity'] }}%</p> </div> @else <p>Kon weerdata niet laden</p> @endif ``` ## 8. Beveiligingstips - **Sla API-sleutel nooit hardcoded op** - altijd via .env - **Gebruik rate limiting** om API-limieten niet te overschrijden - **Valideer gebruikersinput** voor stadsnamen - **Cache responses** om API-aanroepen te reduceren: ```php use Illuminate\Support\Facades\Cache; public function getCurrentWeather(string $city) { return Cache::remember("weather_{$city}", 600, function() use ($city) { // API call code hier }); } ``` ## 9. Voorbeeld response verwerking Een typisch OpenWeatherMap response ziet er zo uit: ```json { "name": "Amsterdam", "main": { "temp": 15.5, "humidity": 65 }, "weather": [ { "description": "licht bewolkt", "icon": "02d" } ] } ``` Deze integratie biedt een robuuste, veilige verbinding met de OpenWeatherMap API met goede foutafhandeling en caching mogelijkheden.