20TD02Y_CCNA_20TD02U_Del5 - itnett/FTD02H-N GitHub Wiki
Lab Scenarioer for APIer
Lab 1: Hva er et API? Forståelse og Grunnleggende Bruk
Mål:
- Forstå hva et API er.
- Lære å bruke APIer i Python ved hjelp av
requests
-biblioteket.
Steg-for-steg Guide:
-
Opprett et nytt Python-prosjekt og installer
requests
-biblioteket:pip install requests
-
Opprett en Python-fil (
basic_api_usage.py
) og skriv kode for å utføre en GET-forespørsel:import requests url = 'https://api.github.com' response = requests.get(url) print(f'Status Code: {response.status_code}') print('Response JSON:') print(response.json())
-
Kjør Python-filen for å se resultatet av GET-forespørselen:
python basic_api_usage.py
Lab 2: Typer av APIer og Grunnleggende Konsepter
Mål:
- Forstå de forskjellige typene APIer.
- Lære grunnleggende konsepter som endpoints, HTTP-metoder, headers og statuskoder.
Steg-for-steg Guide:
-
Opprett en Python-fil (
api_concepts.py
) og skriv kode for å utføre POST, PUT og DELETE forespørsler:import requests base_url = 'https://jsonplaceholder.typicode.com/posts' # GET request response = requests.get(base_url) print(f'GET Status Code: {response.status_code}') print('GET Response JSON:') print(response.json()[:2]) # Print only first 2 items for brevity # POST request new_post = { 'title': 'foo', 'body': 'bar', 'userId': 1 } response = requests.post(base_url, json=new_post) print(f'POST Status Code: {response.status_code}') print('POST Response JSON:') print(response.json()) # PUT request update_post = { 'title': 'foo updated', 'body': 'bar updated', 'userId': 1 } response = requests.put(f'{base_url}/1', json=update_post) print(f'PUT Status Code: {response.status_code}') print('PUT Response JSON:') print(response.json()) # DELETE request response = requests.delete(f'{base_url}/1') print(f'DELETE Status Code: {response.status_code}') print('DELETE Response JSON:') print(response.json())
-
Kjør Python-filen for å se resultatet av POST, PUT og DELETE forespørslene:
python api_concepts.py
Lab 3: Autentisering og Feilhåndtering
Mål:
- Lære å bruke APIer som krever autentisering.
- Implementere feilhåndtering ved bruk av APIer.
Steg-for-steg Guide:
-
Opprett en Python-fil (
auth_error_handling.py
) og skriv kode for å utføre en GET-forespørsel med autentisering:import requests url = 'https://api.github.com/user' token = 'YOUR_PERSONAL_ACCESS_TOKEN' # Replace with your GitHub token headers = { 'Authorization': f'Bearer {token}' } try: response = requests.get(url, headers=headers) response.raise_for_status() # Raise HTTPError for bad responses (4xx and 5xx) print('Authenticated GET Response JSON:') print(response.json()) except requests.exceptions.HTTPError as http_err: print(f'HTTP error occurred: {http_err}') except Exception as err: print(f'Other error occurred: {err}')
-
Kjør Python-filen og observer resultatet:
python auth_error_handling.py
Lab 4: Bygge et Enkelt RESTful API med Flask
Mål:
- Bygge et RESTful API ved hjelp av Flask.
- Implementere grunnleggende CRUD-operasjoner (Create, Read, Update, Delete).
Steg-for-steg Guide:
-
Installer Flask:
pip install Flask
-
Opprett en Python-fil (
flask_api.py
) og skriv kode for et enkelt RESTful API:from flask import Flask, jsonify, request app = Flask(__name__) users = [ {'id': 1, 'name': 'Alice', 'email': '[email protected]'}, {'id': 2, 'name': 'Bob', 'email': '[email protected]'} ] @app.route('/users', methods=['GET']) def get_users(): return jsonify(users) @app.route('/users', methods=['POST']) def create_user(): new_user = request.get_json() users.append(new_user) return jsonify(new_user), 201 @app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): updated_user = request.get_json() for user in users: if user['id'] == user_id: user.update(updated_user) return jsonify(user) return jsonify({'message': 'User not found'}), 404 @app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): global users users = [user for user in users if user['id'] != user_id] return '', 204 if __name__ == '__main__': app.run(debug=True)
-
Kjør Flask-applikasjonen:
python flask_api.py
-
Test API-et ved hjelp av Postman eller en annen API-klient.
Lab 5: Avanserte Konsepter i API-utvikling
Mål:
- Implementere CORS, Rate Limiting og Caching i et Flask API.
- Bruke GraphQL med Flask.
Steg-for-steg Guide:
-
Installer nødvendige biblioteker:
pip install Flask-Cors Flask-Limiter Flask-Caching graphene Flask-Graphene
-
Opprett en Python-fil (
advanced_flask_api.py
) og skriv kode for å inkludere avanserte konsepter:from flask import Flask, jsonify, request from flask_cors import CORS from flask_limiter import Limiter from flask_caching import Cache from flask_graphql import GraphQLView import graphene app = Flask(__name__) CORS(app) limiter = Limiter(app, default_limits=["200 per day", "50 per hour"]) cache = Cache(app, config={'CACHE_TYPE': 'simple'}) users = [ {'id': 1, 'name': 'Alice', 'email': '[email protected]'}, {'id': 2, 'name': 'Bob', 'email': '[email protected]'} ] @app.route('/users', methods=['GET']) @limiter.limit("10 per minute") @cache.cached(timeout=60) def get_users(): return jsonify(users) @app.route('/users', methods=['POST']) def create_user(): new_user = request.get_json() users.append(new_user) return jsonify(new_user), 201 @app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): updated_user = request.get_json() for user in users: if user['id'] == user_id: user.update(updated_user) return jsonify(user) return jsonify({'message': 'User not found'}), 404 @app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): global users users = [user for user in users if user['id'] != user_id] return '', 204 class User(graphene.ObjectType): id = graphene.Int() name = graphene.String() email = graphene.String() class Query(graphene.ObjectType): users = graphene.List(User) def resolve_users(self, info): return users schema = graphene.Schema(query=Query) app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True)) if __name__ == '__main__': app.run(debug=True)
-
Kjør Flask-applikasjonen:
python advanced_flask_api.py
-
Test API-et ved hjelp av Postman eller en annen API-klient og utforsk GraphQL-endepunktet på
/graphql
.
Oppsummering
Disse lab-scenarioene dekker grunnleggende og avanserte konsepter innen API-utvikling, inkludert hva et API er, typer APIer, grunnleggende konsepter, autentisering, feilhåndtering, bygging av RESTful APIer med Flask, og implementering av avanserte funksjoner som CORS, rate limiting, caching og GraphQL. Disse labbene gir en omfattende forståelse og praktisk erfaring med API-utvikling i Python.