Python मा JSON र API संचार गाइड | मान्यकरण र सुरक्षा

1. JSON के हो?(आधारभूत ज्ञान)

JSON को सारांश

JSON (JavaScript Object Notation) क्लाइन्ट र सर्भर बीचको संचारमा बारम्बार प्रयोग हुने डेटा ढाँचा हो। हल्का र पढ्न सजिलो, सरल संरचना भएको कारण वेब अनुप्रयोगहरू तथा मोबाइल अनुप्रयोगहरूमा व्यापक रूपमा प्रयोग गरिन्छ। JSON पाठ स्वरूपमा हुन्छ, जसलाई कुनै पनि भाषामा सजिलै ह्यान्डल गर्न सकिन्छ, त्यसैले यसको प्रयोगशीलता अत्यन्त उच्च छ।

JSON को मूल संरचना

JSON डेटा कुञ्जी र मानको जोडीले प्रतिनिधित्व गर्दछ। उदाहरणका लागि, तलको जस्तै JSON संरचना छ:
{
  "नाम": "सातो",
  "उमेर": 30,
  "रुचि": ["पढ्ने", "चलचित्र"]
}
यस उदाहरणमा, नाम स्ट्रिङ हो, उमेर संख्या हो, रुचि एरे हो। संरचना सरल र पढ्न सजिलो भएको कारण डेटा आदानप्रदान अत्यन्त प्रभावकारी हुन्छ।

JSON को फाइदाहरू

  1. हल्का र प्रभावकारी: पाठ स्वरूप भएको कारण संचार मात्रा कम हुन्छ, जसले नेटवर्क लोड घटाउँछ।
  2. उच्च अनुकूलता: लगभग सबै प्रोग्रामिङ भाषा द्वारा समर्थन गरिन्छ, र विभिन्न प्लेटफर्महरूमा प्रयोग गर्न सकिन्छ।
  3. पार्सिङ सजिलो: डेटा पढ्न र लेख्न सजिलो छ, विशेष गरी API संचारमा यो शक्तिशाली उपकरण हो।

2. Python मा JSON सञ्चालन(मूलभूत भाग)

Python को json मोड्युल

Python मा, json मोड्युल प्रयोग गरेर सजिलै JSON डेटा पढ्न/लेख्न सम्भव छ। उदाहरणका लागि, JSON डेटा लाई Python को शब्दकोश प्रकारमा रूपान्तरण गर्न, json.loads() फङ्क्शन प्रयोग गरिन्छ।
import json

json_data = '{"नाम": "सातो", "उमेर": 30}'
python_obj = json.loads(json_data)

print(python_obj)  # {'नाम': 'सातो', 'उमेर': 30}
उल्टो रूपमा, Python को वस्तु लाई JSON स्वरूपमा रूपान्तरण गर्न json.dumps() प्रयोग गरिन्छ।
python_obj = {"नाम": "सातो", "उमेर": 30}
json_data = json.dumps(python_obj, ensure_ascii=False)

print(json_data)  # {"नाम": "सातो", "उमेर": 30}

फाइलको पढाइ/लेखाइ

JSON डेटा लाई फाइलबाट पढ्न वा फाइलमा लेख्न पनि सम्भव छ।
# फाइलबाट पढ्नुहोस्
with open('data.json', 'r') as f:
    data = json.load(f)

# फाइलमा लेख्नुहोस्
with open('data.json', 'w') as f:
    json.dump(python_obj, f, ensure_ascii=False)
侍エンジニア塾

3. Python मा JSON संचार (व्यावहारिक भाग)

requests मोड्युल प्रयोग गरेर API संचार

requests मोड्युल प्रयोग गर्दा, API मार्फत JSON डेटा सजिलै पठाउन र प्राप्त गर्न सकिन्छ। तल POST अनुरोध प्रयोग गरेर JSON पठाउने र प्रतिक्रिया प्राप्त गर्ने उदाहरण छ।

POST अनुरोधद्वारा JSON डेटा पठाउने

import requests

url = 'https://example.com/api'
data = {'नाम': 'सातो', 'उमेर': 30}

response = requests.post(url, json=data)
json_response = response.json()

print(json_response)

GET अनुरोधद्वारा JSON डेटा प्राप्त गर्ने

GET अनुरोध प्रयोग गरेर, API बाट JSON डेटा प्राप्त गर्नु पनि सजिलो छ।
response = requests.get('https://example.com/api/user/1')
data = response.json()

print(data)

4. त्रुटि ह्यान्डलिंग र सर्वोत्तम अभ्यासहरू

API संचारमा त्रुटि ह्यान्डलिंग

API संचारको क्रममा त्रुटि उत्पन्न भएमा, उपयुक्त त्रुटि ह्यान्डलिंग गर्नु महत्त्वपूर्ण छ। तलको उदाहरणमा, नेटवर्क त्रुटि वा टाइमआउट जस्ता अपवादहरूलाई क्याच गरिएका छन्।
try:
    response = requests.post(url, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as errh:
    print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:
    print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:
    print("Timeout Error:", errt)
except requests.exceptions.RequestException as err:
    print("OOps: Something Else", err)

पुनः प्रयास प्रक्रिया

नेटवर्क अस्थिर भएको अवस्थामा, पुनः प्रयास प्रक्रिया लागू गर्नु पनि महत्त्वपूर्ण छ। requests मोड्युलमा, पुनः प्रयास प्रक्रिया Retry क्लास प्रयोग गरेर सजिलै लागू गर्न सकिन्छ।
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

response = session.get(url)
侍エンジニア塾

5. JSON मान्यकरण

jsonschema प्रयोग गरेर मान्यकरण

API बाट प्राप्त हुने JSON डेटा अपेक्षित ढाँचामा छ कि छैन जाँच गर्न, jsonschema लाइब्रेरी प्रयोग गरेर मान्यकरण गर्न सकिन्छ।
from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "नाम": {"type": "string"},
        "उमेर": {"type": "number"}
    },
    "required": ["नाम", "उमेर"]
}

json_data = {"नाम": "佐藤", "उमेर": 30}

try:
    validate(instance=json_data, schema=schema)
    print("JSON is valid")
except ValidationError as e:
    print("Validation Error:", e)
जटिल स्कीमा र नेस्टेड वस्तुहरूलाई पनि समर्थन गर्न सकिन्छ, जसले API बाट प्राप्त डेटा निश्चित रूपमा जाँच गर्न मद्दत गर्दछ।

6. सुरक्षा सम्बन्धी उत्तम अभ्यासहरू

API कुञ्जीको व्यवस्थापन

API कुञ्जीलाई स्रोत कोडभित्र हार्डकोड नगरी, वातावरणीय चलहरू जस्ता माध्यमबाट व्यवस्थापन गर्ने सिफारिस गरिन्छ। यसले सुरक्षा जोखिमलाई घटाउन मद्दत गर्दछ।
import os

api_key = os.getenv('API_KEY')

डेटाको स्यानिटाइजेशन

योगकर्ताबाट प्राप्त इनपुट डेटा सर्भरमा पठाउनु अघि, उपयुक्त स्यानिटाइजेशन प्रक्रिया गरेर, SQL इन्जेक्शन र क्रस-साइट स्क्रिप्टिङ (XSS) बाट बच्न सकिन्छ।
from html import escape

safe_data = escape(user_input)
侍エンジニア塾