Help me schrijven van Ruby code voor API integratie en data uitwisseling
description
Met deze prompt kun je snel en betrouwbaar Ruby code genereren om externe API's te integreren, waardoor je tijd bespaart en fouten voorkomt. De code bevat best practices voor verzoeken, response verwerking en foutafhandeling, wat robuuste applicaties mogelijk maakt.
prompt
Help me met het schrijven van Ruby code om te communiceren met een externe API: <beschrijf de API en het doel van de integratie>. Geef aan welke API endpoints ik moet ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hieronder vind je een voorbeeld van Ruby-code om te communiceren met een externe API voor het ophalen van productinformatie, inclusief het GET-verzoek naar `/weather?city=Amsterdam`. Ik gebruik hiervoor de `net/http` bibliotheek, die standaard in Ruby zit.
```ruby
require 'net/http'
require 'uri'
require 'json'
# API basis URL
API_BASE_URL = 'https://api.example.com' # vervang dit door de echte API URL
# Endpoint
endpoint = "/weather?city=Amsterdam"
uri = URI.parse(API_BASE_URL + endpoint)
begin
# Maak een HTTP GET-verzoek
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == "https")
request = Net::HTTP::Get.new(uri.request_uri)
# Voeg headers toe als dat nodig is (bijvoorbeeld API-sleutel)
# request['Authorization'] = 'Bearer YOUR_API_TOKEN'
# Verstuur het verzoek
response = http.request(request)
# Controleer de HTTP-status
case response
when Net::HTTPSuccess
# Verwerk de JSON-respons
data = JSON.parse(response.body)
puts "Weer in Amsterdam:"
puts "Temperatuur: #{data['temperature']}°C"
puts "Beschrijving: #{data['description']}"
# Voeg meer verwerking toe afhankelijk van de API-respons
else
# Foutafhandeling
puts "Fout bij ophalen van gegevens: #{response.code} #{response.message}"
end
rescue StandardError => e
# Algemene foutafhandeling
puts "Er is een fout opgetreden: #{e.message}"
end
```
### Samenvatting
- **API Endpoint:** GET `/weather?city=Amsterdam`
- **Basis URL:** Vervang `'https://api.example.com'` door de echte API URL.
- **Foutafhandeling:** Inclusief checks op HTTP-status en rescue voor netwerk- of parsingfouten.
- **Verwerking:** JSON-respons wordt geparset en de gegevens worden getoond.
Wil je dit uitbreiden voor het ophalen van productinformatie of andere endpoints? Laat het gerust weten!
provider: deepseek
model: deepseek-chat
Ik zie dat je Ruby code wilt voor een API-communicatie voor productinformatie, maar je vermeldt een weer-API endpoint. Ik zal je helpen met beide scenario's:
## Voor productinformatie (algemeen voorbeeld):
```ruby
require 'net/http'
require 'json'
require 'uri'
class ProductAPI
BASE_URL = 'https://api.jouwwebshop.com'
def self.get_product_info(product_id)
uri = URI("#{BASE_URL}/products/#{product_id}")
begin
response = Net::HTTP.get_response(uri)
case response
when Net::HTTPSuccess
product_data = JSON.parse(response.body)
puts "Product gevonden: #{product_data['name']}"
product_data
when Net::HTTPNotFound
puts "Product niet gevonden (404)"
nil
when Net::HTTPClientError
puts "Client error: #{response.code}"
nil
when Net::HTTPServerError
puts "Server error: #{response.code}"
nil
else
puts "Onverwachte response: #{response.code}"
nil
end
rescue SocketError => e
puts "Netwerkfout: #{e.message}"
nil
rescue JSON::ParserError => e
puts "Ongeldige JSON response: #{e.message}"
nil
rescue StandardError => e
puts "Onverwachte fout: #{e.message}"
nil
end
end
end
# Gebruik:
# product = ProductAPI.get_product_info(123)
```
## Voor weather API (zoals je vermeldde):
```ruby
require 'net/http'
require 'json'
require 'uri'
class WeatherAPI
BASE_URL = 'https://api.weerservice.com'
def self.get_weather(city)
uri = URI("#{BASE_URL}/weather")
uri.query = URI.encode_www_form({ city: city })
begin
response = Net::HTTP.get_response(uri)
if response.is_a?(Net::HTTPSuccess)
weather_data = JSON.parse(response.body)
puts "Weer in #{city}: #{weather_data['temperature']}°C"
weather_data
else
puts "Fout bij ophalen weer: #{response.code} - #{response.message}"
nil
end
rescue => e
puts "Fout: #{e.message}"
nil
end
end
end
# Gebruik:
# weather = WeatherAPI.get_weather('Amsterdam')
```
## Belangrijke API endpoints voor webshop:
Typische endpoints die je nodig zou kunnen hebben:
- `GET /products` - Alle producten ophalen
- `GET /products/{id}` - Specifiek product
- `GET /categories` - Productcategorieën
- `GET /products?category={id}` - Producten per categorie
## Aanbevelingen:
1. Gebruik de `httparty` gem voor betere HTTP handling:
```ruby
gem install httparty
```
2. Implementeer rate limiting
3. Gebruik environment variables voor API keys
4. Voeg caching toe voor betere performance
Welke specifieke API gebruik je voor je webshop? Dan kan ik meer gerichte code geven.