API-er (Application Programming Interfaces) er avgjørende for moderne webutvikling, og i 2024 ser vi en økning i bruken av både globale og lokale API-er. Fra sanntidsdata til betalinger og spesialiserte tjenester for Norge, lar API-er deg raskt legge til funksjoner i applikasjoner. I dette innlegget ser jeg på noen av de beste API-ene for utviklere, inkludert norsk-spesifikke, og hvordan de kan brukes i Flask.
Hva er et API?
Et API fungerer som en bro mellom applikasjoner, og lar dem dele informasjon eller utføre handlinger. For eksempel kan du bruke et API for å hente værdata, behandle betalinger eller koble til nasjonale tjenester som Brønnøysundregistrene.
Norske API-er
Norge har mange API-er som gir tilgang til spesifikke tjenester som værdata, bedriftsinformasjon, og betalingsløsninger. Disse API-ene er skreddersydd for lokale behov.
1. Vipps API
Vipps er Norges mest populære betalingsløsning, og API-et lar deg legge til raske betalinger i applikasjoner.
@app.route('/vipps-payment', methods=['POST'])
def vipps_payment():
data = {"amount": 100, "transactionText": "Testbetaling"}
headers = {"Authorization": "Bearer din_api_nøkkel"}
response = requests.post("https://api.vipps.no/v1/payments", json=data, headers=headers)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke gjennomføre betaling med Vipps"}), response.status_code
Vipps gjør det enkelt for norske brukere å betale raskt, og passer perfekt for nettbutikker og andre applikasjoner.
2. Telenor SMS Gateway API
Telenor tilbyr en SMS Gateway for sending av meldinger. Dette er ideelt for varsler og meldinger direkte til brukernes telefoner.
@app.route('/send-sms', methods=['POST'])
def send_sms():
data = {"to": "recipient_number", "message": "Hello from Flask!"}
headers = {"Authorization": "Bearer din_api_nøkkel"}
response = requests.post("https://api.telenor.com/sms/v1/messages", json=data, headers=headers)
if response.status_code == 201:
return jsonify({"success": "SMS sendt!"})
else:
return jsonify({"error": "Kunne ikke sende SMS"}), response.status_code
Med Telenor API-et kan du enkelt sende automatiske SMS-varsler fra din applikasjon.
3. Meteorologisk Institutt API (YR)
Dette API-et fra Meteorologisk Institutt tilbyr gratis værdata for Norge og resten av verden. Det er spesielt nyttig for norske applikasjoner som krever nøyaktige værprognoser.
import requests
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/weather//')
def get_weather(lat, lon):
url = f"https://api.met.no/weatherapi/locationforecast/2.0/compact?lat={lat}&lon={lon}"
headers = {
"User-Agent": "MyFlaskApp/1.0 (myemail@example.com)"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente værdata"}), response.status_code
if __name__ == '__main__':
app.run(debug=True)
Dette API-et krever at du legger til en brukervennlig header (User-Agent), men tilbyr detaljerte prognoser for ulike steder i Norge.
4. Altinn API
Altinn er en portal for digitale tjenester i Norge. API-et lar bedrifter og privatpersoner kommunisere med offentlige tjenester.
import requests
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/altinn/data')
def get_altinn_data():
url = "https://api.altinn.no/v1/resource"
headers = {"Authorization": "Bearer din_api_nøkkel"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente data fra Altinn"}), response.status_code
if __name__ == '__main__':
app.run(debug=True)
Altinn API-et er ideelt for applikasjoner som integreres med offentlige tjenester, og det støtter mange typer data.
5. Kartverket API
Kartverket tilbyr API-er for geografisk informasjon, som eiendomsdata, kart, og høydedata. Det er nyttig for applikasjoner som krever detaljerte kartløsninger.
@app.route('/map-data//')
def get_map_data(lat, lon):
url = f"https://ws.geonorge.no/eiendom/v1/nabolagsinfo?lat={lat}&lon={lon}"
headers = {"User-Agent": "MyFlaskApp/1.0 (myemail@example.com)"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente data fra Kartverket"}), response.status_code
Kartverket er en uvurderlig ressurs for applikasjoner som trenger geografisk tilpasning.
6. Brønnøysundregistrene API
Brønnøysundregistrene gir tilgang til offentlig bedriftsinformasjon i Norge. Dette API-et er nyttig for å verifisere selskaper og hente firmainformasjon.
@app.route('/company-info/')
def get_company_info(org_number):
url = f"https://data.brreg.no/enhetsregisteret/api/enheter/{org_number}"
response = requests.get(url)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente bedriftsinformasjon"}), response.status_code
Dette API-et er ideelt for applikasjoner som trenger å integrere bedriftsinformasjon i sine systemer.
7. Finn.no API
Finn.no tilbyr API-er for eiendom, stillinger, og andre kategorier.
@app.route('/finn-ads')
def get_finn_ads():
url = "https://api.finn.no/ad/v1/"
headers = {"Authorization": "Bearer din_api_nøkkel"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente data fra Finn.no"}), response.status_code
Perfekt for applikasjoner som trenger å analysere eller vise annonser fra Finn.
8. DNB Open Banking API
DNB tilbyr API-er for kontoinformasjon, betalinger, og andre banktjenester. Dette er et viktig verktøy for fintech-applikasjoner.
@app.route('/dnb-account-info')
def get_dnb_account_info():
url = "https://api.dnb.no/v1/accounts"
headers = {"Authorization": "Bearer din_api_nøkkel"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente kontoinformasjon fra DNB"}), response.status_code
Integrer DNB API-et for å tilby smarte banktjenester i applikasjonene dine.
Globale API-er
Globale API-er gir tilgang til universelle tjenester som lagring, e-post og geolokasjon. Disse API-ene kan brukes i applikasjoner verden over.
1. OpenAI API
OpenAI gir deg tilgang til avanserte språkmodeller som ChatGPT. Her er hvordan du kan bruke OpenAI API til å bygge en chatbot:
import openai
from flask import Flask, request, jsonify
app = Flask(__name__)
openai.api_key = "din_openai_api_nøkkel"
@app.route('/chat', methods=['POST'])
def chat():
user_input = request.json.get('message')
response = openai.Completion.create(
model="gpt-4",
prompt=user_input,
max_tokens=150
)
return jsonify(response.choices[0].text.strip())
if __name__ == '__main__':
app.run(debug=True)
Med OpenAI API kan du bygge kraftige, AI-drevne applikasjoner for alt fra kundestøtte til kreativ skriving.
2. Stripe API
Stripe er fortsatt en av de beste betalingsløsningene, og passer godt for norske nettbutikker.
import stripe
from flask import Flask, jsonify
app = Flask(__name__)
stripe.api_key = "din_api_nøkkel"
@app.route('/create-payment', methods=['POST'])
def create_payment():
try:
session = stripe.checkout.Session.create(
payment_method_types=['card'],
line_items=[{
'price_data': {
'currency': 'nok',
'product_data': {'name': 'Flask Produkt'},
'unit_amount': 10000,
},
'quantity': 1,
}],
mode='payment',
success_url='https://example.com/success',
cancel_url='https://example.com/cancel',
)
return jsonify({'id': session.id})
except Exception as e:
return jsonify({'error': str(e)})
if __name__ == '__main__':
app.run(debug=True)
3. Google Maps Geocoding API
Google Maps Geocoding API er ideelt for applikasjoner som trenger å konvertere adresser til geografiske koordinater eller omvendt. Dette er nyttig for å bygge kartbaserte applikasjoner eller tilby lokasjonsbaserte tjenester.
@app.route('/geocode/<address>')
def geocode(address):
import requests
from flask import jsonify
api_key = "din_google_api_nøkkel"
url = f"https://maps.googleapis.com/maps/api/geocode/json?address={address}&key={api_key}"
response = requests.get(url)
if response.status_code == 200:
return jsonify(response.json())
else:
return jsonify({"error": "Kunne ikke hente geodata"}), response.status_code
Dette API-et er ideelt for å integrere geolokasjon og kartdata i applikasjoner. For eksempel kan du bruke det til å vise en adresse på et kart eller finne nærliggende tjenester basert på koordinater.
4. Amazon S3 API
Amazon S3 API lar deg lagre og hente filer i en skalerbar skylagringsløsning. Det er populært for applikasjoner som trenger sikker og pålitelig lagring for bilder, videoer eller andre filer.
@app.route('/upload-file', methods=['POST'])
def upload_file():
import boto3
from flask import request, jsonify
s3 = boto3.client('s3', aws_access_key_id="din_aws_access_key", aws_secret_access_key="din_aws_secret_key")
file = request.files['file']
bucket_name = "ditt_bucket_navn"
try:
s3.upload_fileobj(file, bucket_name, file.filename)
return jsonify({"status": "File uploaded successfully"})
except Exception as e:
return jsonify({"error": str(e)}), 500
Amazon S3 er perfekt for å lagre store datamengder på en kostnadseffektiv måte. Det brukes ofte i nettbutikker, bildegallerier og apper med store filer.
5. SendGrid API
SendGrid API tilbyr en pålitelig løsning for å sende e-poster fra applikasjoner. Det brukes ofte til å sende bekreftelser, nyhetsbrev og transaksjonsmeldinger.
@app.route('/send-email', methods=['POST'])
def send_email():
import sendgrid
from sendgrid.helpers.mail import Mail
from flask import request, jsonify
sg = sendgrid.SendGridAPIClient(api_key="din_sendgrid_api_nøkkel")
data = request.json
message = Mail(
from_email='ditt_email@example.com',
to_emails=data['to_email'],
subject=data['subject'],
html_content=data['html_content']
)
try:
response = sg.send(message)
return jsonify({"status": "Email sent", "response": response.status_code})
except Exception as e:
return jsonify({"error": str(e)}), 500
SendGrid API er en enkel måte å sende profesjonelle e-poster direkte fra applikasjonen din uten å bekymre deg for leveringsproblemer.
Resultat og Oppsummering
Ved å bruke API-er som Meteorologisk Institutt, Altinn, Kartverket, Stripe, og OpenAI, kan du bygge moderne applikasjoner som effektivt møter behovene til både lokale og globale brukere. Disse API-ene tilbyr funksjonalitet som ellers ville krevd betydelige utviklingsressurser å utvikle fra bunnen av.
Eksemplene i denne artikkelen viser grunnleggende oppsett, men de fleste implementasjoner vil kreve tilpasninger for å oppfylle spesifikke krav. Husk også at API-spesifikasjoner oppdateres kontinuerlig, så det er viktig å holde seg oppdatert med den nyeste dokumentasjonen fra leverandørene.
Om du trenger hjelp med å sette opp eller tilpasse API-er, er du velkommen til å kontakte meg for veiledning. Sjekk gjerne ut min GitHub for flere eksempler og ideer.
Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *