לדלג לתוכן

6.7 ג'סון, ובקשות הרצאה

מה זה JSON

  • ג'סון זה דרך שבה אנחנו יכולים לשמור מידע בצורה של מילון, דרך שקריאה וברורה גם למתכנתים, וגם קלה למחשב לפרסור.
  • דוגמה לקובץ ג'סון
    {
      "squadName": "Super hero squad",
      "homeTown": "Metro City",
      "formed": 2016,
      "secretBase": "Super tower",
      "active": true,
      "members": [
        {
          "name": "Molecule Man",
          "age": 29,
          "secretIdentity": "Dan Jukes",
          "powers": ["Radiation resistance", "Turning tiny", "Radiation blast"]
        },
        {
          "name": "Madame Uppercut",
          "age": 39,
          "secretIdentity": "Jane Wilson",
          "powers": [
            "Million tonne punch",
            "Damage resistance",
            "Superhuman reflexes"
          ]
        }
      ]
    }
    

מודול json

  • מודול מובנה!

קריאה מקבצי json

import json
from pathlib import Path

json_path = Path("config.json")
json_data = json_path.read_text()

# JSON string
print(json_data) # Output: '{"name": "John", "age": 30, "city": "New York"}'

# Convert json string to dict
data_dict = json.loads(json_data)

# Accessing data
print("Name:", data_dict['name'])
print("Age:", data_dict['age'])
print("City:", data_dict['city'])

- ניתן לראות שטענו את הקובץ json למילון

כתיבה לקבצי json

  • כתיבת מילונים לקבצי json
    import json
    from pathlib import Path
    
    # Python dictionary
    data_dict = {'name': 'Jane', 'age': 25, 'city': 'San Francisco'}
    
    # Convert dict to json string
    json_data = json.dumps(data_dict)
    
    # Print the JSON string
    print(json_data)
    
    json_path = Path("config.json")
    json_path.write_text(json_data)
    

ממשקי API

  • להמון אתרים יש ממשק API, ממשק API הוא דרך שבה אפשר לגרום לאתר לעשות/להחזיר כל מיני פעולות.
  • ממשקי API הן ממשקים מיוחדים של האתרים שאנחנו מתממשקים בדיוק כמו שאנחנו נגשים לאתר, לכל נקודת API יש איזשהו קישור כמו https://jsonplaceholder.typicode.com/posts/1, כשאנחנו נגשים לנקודה אנחנו צריכים להעביר לה כל מיני פרמטרים שמציינים איזה פעולה אנחנו רוצים לעשות מול הממשק, וכל מיני פרמטרים.
  • אז מה אפשר לעשות מול API של אתר? לקבל מידע על דברים באתר כמו משתמשים, לעדכן פרטים, לשלוח פוסטים וכל דבר שאנחנו יכולים לעשות באתר עצמו.
  • נדבר קצת על סוגים של בקשות של API:
    • בקשת GET: בקשת GET היא בקשה שבדרך כלל מציינת שאנחנו רוצים לקבל מידע מהנקודת API
    • בקשת POST: בקשת POST היא בקשה שבדרך כלל מציינת שאנחנו רוצים לעדכן מידע מהנקודת API.

מודול requests

  • הריצו pip install requests
  • מודול זה מאפשר לנו לשלוח בקשות לאתרים בצורה שמאפשרת לנו לעשות המון דברים, נשתמש במודול הזה כדי להתממשק מול נקודות API.

בקשות GET

import requests

# URL for a sample API
api_url = 'https://jsonplaceholder.typicode.com/posts/1'

# Make a GET request
response = requests.get(api_url)

# Print the response content
print(response.text)
print(response.json())

- הפונקציה requests.get שולחת בקשת get לurl שהבאנו לו.
- אפשר לגשת לתשובה של בקשה באמצעות response.text או response.json()
- אנחנו יכולים גם להעביר פרמטרים ל API כשאנחנו עושים GET
import requests

# URL with parameters
api_url = 'https://jsonplaceholder.typicode.com/posts'
params = {'userId': 1}

# Make a GET request with parameters
response = requests.get(api_url, params=params)

# Print the response content
print(response.json())

בקשות POST

import requests

# URL for a sample API
api_url = 'https://jsonplaceholder.typicode.com/posts'

# Data to be sent in the POST request
post_data = {'title': 'foo', 'body': 'bar', 'userId': 1}

# Make a POST request
response = requests.post(api_url, json=post_data)

# Print the response content
print(response.json())

- אנחנו יכולים לעשות בקשות POST לאתר (כדי לשלוח פרטים לאתר) באמצעות הפונקציה requests.post, במקרה הזה אנחנו מעלים פוסטים לאתר באמצעות הבקשה.

סיכום

  • למדנו עד כו לא מעט על אתרים ועל איך לכתוב קוד פייתון שמתממשק עם אתרים, אם זה עם העמודים של האתר (html), או ממש עם API עם json-ים, זה ממש רק הקצה של הקרחון של הדברים שאפשר לעשות עם פייתון כדי להתממשק עם אתרים, אם התחום מעניין אתכם, אתם יכולים להמשיך לקרוא וללמוד.