ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

اگر آپ یہ مضمون پڑھ رہے ہیں، تو آپ شاید پہلے سے ہی ان امکانات سے واقف ہوں گے جو API (ایپلیکیشن پروگرامنگ انٹرفیس) استعمال کرتے وقت کھلتے ہیں۔

اپنی ایپلیکیشن میں بہت سے عوامی APIs میں سے ایک کو شامل کر کے، آپ اس ایپلیکیشن کی فعالیت کو بڑھا سکتے ہیں یا ضروری ڈیٹا کے ساتھ اس کی تکمیل کر سکتے ہیں۔ لیکن کیا ہوگا اگر آپ نے ایک منفرد خصوصیت تیار کی ہے جسے آپ کمیونٹی کے ساتھ بانٹنا چاہتے ہیں؟

جواب آسان ہے: آپ کو ضرورت ہے۔ اپنا خود کا API بنائیں.

اگرچہ یہ سب سے پہلے ایک مشکل کام کی طرح لگتا ہے، یہ اصل میں بہت آسان ہے. ہم آپ کو دکھائیں گے کہ اسے Python کے ساتھ کیسے کرنا ہے۔

آپ کو شروع کرنے کی کیا ضرورت ہے۔

API کی ترقی کی ضرورت ہے:

  • ازگر 3;
  • فلاسک - ویب ایپلیکیشنز بنانے کے لیے ایک سادہ اور استعمال میں آسان فریم ورک؛
  • فلاسک - آرام سے فلاسک کے لیے ایک توسیع ہے جو آپ کو فوری اور کم سے کم ترتیب کے ساتھ ایک REST API تیار کرنے کی اجازت دیتی ہے۔

تنصیب کمانڈ کے ذریعہ کی جاتی ہے:

pip install flask-restful

ہم beginners کے لیے ایک مفت انتہائی پروگرامنگ کی تجویز کرتے ہیں:
C# میں ٹیلیگرام بوٹ کی ترقی 26-28 اگست۔ ایک مفت انٹینسیو جو آپ کو یہ سمجھنے کی اجازت دیتا ہے کہ مددگار بوٹس کیسے کام کرتے ہیں، ٹیلیگرام API کے ساتھ کام کرنے کی خصوصیات اور دیگر باریکیاں۔ سرفہرست تین شرکاء کو سکل باکس سے 30 روبل ملیں گے۔.

شروع کرنے سے پہلے

ہم بنیادی کے ساتھ ایک RESTful API تیار کرنے جا رہے ہیں۔ CRUID فعالیت.

کام کو مکمل طور پر سمجھنے کے لیے، آئیے مذکورہ بالا دو اصطلاحات کو سمجھیں۔

REST کیا ہے؟

REST API (نمائندہ ریاست کی منتقلی) ایک API ہے جو ڈیٹا کے تبادلے کے لیے HTTP درخواستوں کا استعمال کرتا ہے۔

REST APIs کو کچھ معیارات پر پورا اترنا چاہیے:

  • کلائنٹ سرور فن تعمیر: کلائنٹ صارف کے انٹرفیس کے ساتھ تعامل کرتا ہے، اور سرور بیک اینڈ اور ڈیٹا اسٹور کے ساتھ تعامل کرتا ہے۔ کلائنٹ اور سرور خود مختار ہیں، ان میں سے کسی کو بھی دوسرے سے الگ کیا جا سکتا ہے۔
  • اسٹیٹ لیس - سرور پر کلائنٹ کا کوئی ڈیٹا محفوظ نہیں ہے۔ سیشن کی حالت کلائنٹ کی طرف محفوظ ہے۔
  • کیچ ایبلٹی - کلائنٹ مجموعی کارکردگی کو بہتر بنانے کے لیے سرور کے جوابات کیش کر سکتے ہیں۔

CRUD کیا ہے؟

را ایک پروگرامنگ کا تصور ہے جو چار بنیادی اعمال (تخلیق، پڑھنا، اپ ڈیٹ اور حذف) کو بیان کرتا ہے۔

REST API میں، درخواست کی اقسام اور درخواست کے طریقے پوسٹ کرنے، حاصل کرنے، ڈالنے، حذف کرنے جیسی کارروائیوں کے لیے ذمہ دار ہیں۔

اب جب کہ ہم نے بنیادی شرائط سے نمٹا ہے، ہم API بنانا شروع کر سکتے ہیں۔

ترقی

آئیے مصنوعی ذہانت کے حوالے سے اقتباسات کا ذخیرہ بنائیں۔ AI آج کی سب سے تیزی سے بڑھتی ہوئی ٹیکنالوجیز میں سے ایک ہے، اور Python AI کے ساتھ کام کرنے کا ایک مقبول ٹول ہے۔

اس API کے ساتھ، ایک Python ڈویلپر تیزی سے AI کے بارے میں جان سکتا ہے اور نئی کامیابیوں سے متاثر ہو سکتا ہے۔ اگر ڈویلپر کے پاس اس موضوع پر قیمتی خیالات ہیں، تو وہ انہیں ذخیرہ میں شامل کر سکے گا۔

آئیے مطلوبہ ماڈیولز درآمد کرکے اور فلاسک ترتیب دے کر شروع کریں:

from flask import Flask
from flask_restful import Api, Resource, reqparse
import random
app = Flask(__name__)
api = Api(app)

اس ٹکڑوں میں، Flask، Api اور Resource وہ کلاسز ہیں جن کی ہمیں ضرورت ہے۔

Reqparse ایک Flask-RESTful درخواست پارس کرنے والا انٹرفیس ہے... آپ کو بے ترتیب اقتباس ظاہر کرنے کے لیے بے ترتیب ماڈیول کی بھی ضرورت ہوگی۔

اب ہم AI کے بارے میں اقتباسات کا ذخیرہ بنائیں گے۔

ہر ریپو اندراج پر مشتمل ہوگا:

  • ڈیجیٹل ID؛
  • اقتباس کے مصنف کا نام؛
  • اقتباس

چونکہ یہ صرف ایک سیکھنے کی مثال ہے، ہم تمام اندراجات کو ازگر کی فہرست میں محفوظ کریں گے۔ ایک حقیقی ایپلی کیشن میں، ہم زیادہ تر اس کے بجائے ڈیٹا بیس استعمال کریں گے۔

ai_quotes = [
    {
        "id": 0,
        "author": "Kevin Kelly",
        "quote": "The business plans of the next 10,000 startups are easy to forecast: " +
                 "Take X and add AI."
    },
    {
        "id": 1,
        "author": "Stephen Hawking",
        "quote": "The development of full artificial intelligence could " +
                 "spell the end of the human race… " +
                 "It would take off on its own, and re-design " +
                 "itself at an ever increasing rate. " +
                 "Humans, who are limited by slow biological evolution, " +
                 "couldn't compete, and would be superseded."
    },
    {
        "id": 2,
        "author": "Claude Shannon",
        "quote": "I visualize a time when we will be to robots what " +
                 "dogs are to humans, " +
                 "and I’m rooting for the machines."
    },
    {
        "id": 3,
        "author": "Elon Musk",
        "quote": "The pace of progress in artificial intelligence " +
                 "(I’m not referring to narrow AI) " +
                 "is incredibly fast. Unless you have direct " +
                 "exposure to groups like Deepmind, " +
                 "you have no idea how fast — it is growing " +
                 "at a pace close to exponential. " +
                 "The risk of something seriously dangerous " +
                 "happening is in the five-year timeframe." +
                 "10 years at most."
    },
    {
        "id": 4,
        "author": "Geoffrey Hinton",
        "quote": "I have always been convinced that the only way " +
                 "to get artificial intelligence to work " +
                 "is to do the computation in a way similar to the human brain. " +
                 "That is the goal I have been pursuing. We are making progress, " +
                 "though we still have lots to learn about " +
                 "how the brain actually works."
    },
    {
        "id": 5,
        "author": "Pedro Domingos",
        "quote": "People worry that computers will " +
                 "get too smart and take over the world, " +
                 "but the real problem is that they're too stupid " +
                 "and they've already taken over the world."
    },
    {
        "id": 6,
        "author": "Alan Turing",
        "quote": "It seems probable that once the machine thinking " +
                 "method had started, it would not take long " +
                 "to outstrip our feeble powers… " +
                 "They would be able to converse " +
                 "with each other to sharpen their wits. " +
                 "At some stage therefore, we should " +
                 "have to expect the machines to take control."
    },
    {
        "id": 7,
        "author": "Ray Kurzweil",
        "quote": "Artificial intelligence will reach " +
                 "human levels by around 2029. " +
                 "Follow that out further to, say, 2045, " +
                 "we will have multiplied the intelligence, " +
                 "the human biological machine intelligence " +
                 "of our civilization a billion-fold."
    },
    {
        "id": 8,
        "author": "Sebastian Thrun",
        "quote": "Nobody phrases it this way, but I think " +
                 "that artificial intelligence " +
                 "is almost a humanities discipline. It's really an attempt " +
                 "to understand human intelligence and human cognition."
    },
    {
        "id": 9,
        "author": "Andrew Ng",
        "quote": "We're making this analogy that AI is the new electricity." +
                 "Electricity transformed industries: agriculture, " +
                 "transportation, communication, manufacturing."
    }
]

اب ہمیں ایک کوٹ ریسورس کلاس بنانے کی ضرورت ہے جو ہمارے API اینڈ پوائنٹس کے آپریشنز کی وضاحت کرے گی۔ کلاس کے اندر چار طریقوں کا اعلان کرنا ضروری ہے: حاصل کریں، پوسٹ کریں، ڈالیں، حذف کریں۔

آئیے GET طریقہ سے شروع کرتے ہیں۔

یہ آپ کو اس کی ID کی وضاحت کرکے ایک مخصوص اقتباس حاصل کرنے کی اجازت دیتا ہے، یا اگر کوئی ID متعین نہیں ہے تو بے ترتیب اقتباس حاصل کرسکتے ہیں۔

class Quote(Resource):
    def get(self, id=0):
        if id == 0:
            return random.choice(ai_quotes), 200
        for quote in ai_quotes:
            if(quote["id"] == id):
                return quote, 200
        return "Quote not found", 404

اگر ID ڈیفالٹ قدر پر مشتمل ہے تو GET طریقہ بے ترتیب اقتباس واپس کرتا ہے، یعنی کال کرتے وقت طریقہ ID سیٹ نہیں کیا گیا تھا۔

اگر یہ سیٹ ہے، تو طریقہ حوالہ جات کے درمیان تلاش کرتا ہے اور ایک کو تلاش کرتا ہے جس میں دی گئی ID ہے۔ اگر کچھ نہیں ملا تو، پیغام "اقتباس نہیں ملا، 404" ظاہر ہوتا ہے۔

یاد رکھیں، اگر درخواست کامیاب ہوئی تو طریقہ 200 کا HTTP اسٹیٹس واپس کرتا ہے اور اگر اندراج نہیں ملا تو 404۔

اب آئیے ریپوزٹری میں ایک نیا اقتباس شامل کرنے کے لیے POST طریقہ بنائیں

جیسے ہی آپ ٹائپ کریں گے اسے ہر نئے اقتباس کی شناخت مل جائے گی۔ اس کے علاوہ، POST ان پیرامیٹرز کو پارس کرنے کے لیے reqparse کا استعمال کرے گا جو درخواست کے باڈی میں جائیں گے (مصنف اور اقتباس کا متن)۔

def post(self, id):
      parser = reqparse.RequestParser()
      parser.add_argument("author")
      parser.add_argument("quote")
      params = parser.parse_args()
      for quote in ai_quotes:
          if(id == quote["id"]):
              return f"Quote with id {id} already exists", 400
      quote = {
          "id": int(id),
          "author": params["author"],
          "quote": params["quote"]
      }
      ai_quotes.append(quote)
      return quote, 201

اوپر کے کوڈ میں، POST طریقہ نے ایک اقتباس ID کو قبول کیا۔ پھر، reqparse کا استعمال کرتے ہوئے، اس نے درخواست سے مصنف اور اقتباس کو بازیافت کیا، انہیں params ڈکشنری میں محفوظ کیا۔

اگر مخصوص ID کے ساتھ کوئی اقتباس پہلے سے موجود ہے، تو طریقہ مناسب پیغام اور کوڈ 400 دکھاتا ہے۔

اگر متعین ID کے ساتھ کوئی اقتباس ابھی تک نہیں بنایا گیا ہے، تو طریقہ مخصوص ID اور مصنف کے ساتھ ساتھ دیگر پیرامیٹرز کے ساتھ ایک نیا اندراج بناتا ہے۔ اس کے بعد یہ ai_quotes کی فہرست میں ایک اندراج شامل کرتا ہے اور 201 کوڈ کے ساتھ ایک نئے اقتباس کے ساتھ اندراج واپس کرتا ہے۔

اب ہم ذخیرہ میں موجود اقتباس کو تبدیل کرنے کے لیے ایک PUT طریقہ بناتے ہیں۔

def put(self, id):
      parser = reqparse.RequestParser()
      parser.add_argument("author")
      parser.add_argument("quote")
      params = parser.parse_args()
      for quote in ai_quotes:
          if(id == quote["id"]):
              quote["author"] = params["author"]
              quote["quote"] = params["quote"]
              return quote, 200
      
      quote = {
          "id": id,
          "author": params["author"],
          "quote": params["quote"]
      }
      
      ai_quotes.append(quote)
      return quote, 201

PUT طریقہ، پچھلی مثال کی طرح، ایک ID اور ایک ان پٹ لیتا ہے اور reqparse کا استعمال کرتے ہوئے اقتباس کے پیرامیٹرز کو پارس کرتا ہے۔

اگر مخصوص ID کے ساتھ کوئی اقتباس موجود ہے، تو طریقہ اسے نئے پیرامیٹرز کے ساتھ اپ ڈیٹ کرے گا اور پھر کوڈ 200 کے ساتھ اپ ڈیٹ شدہ اقتباس کو آؤٹ پٹ کرے گا۔ اگر ابھی تک مخصوص ID کے ساتھ کوئی اقتباس نہیں ہے، تو کوڈ 201 کے ساتھ ایک نیا ریکارڈ بنایا جائے گا۔

آخر میں، آئیے ایک اقتباس کو ہٹانے کے لیے ایک DELETE طریقہ بنائیں جو اب متاثر کن نہیں ہے۔

def delete(self, id):
      global ai_quotes
      ai_quotes = [qoute for qoute in ai_quotes if qoute["id"] != id]
      return f"Quote with id {id} is deleted.", 200

یہ طریقہ اقتباس ID کو بطور ان پٹ لیتا ہے اور مشترکہ فہرست کا استعمال کرتے ہوئے ai_quotes کی فہرست کو اپ ڈیٹ کرتا ہے۔

اب جب کہ ہم نے تمام طریقے بنا لیے ہیں، ہمیں بس اتنا کرنے کی ضرورت ہے کہ وسائل کو API میں شامل کریں، راستہ سیٹ کریں، اور فلاسک چلائیں۔

api.add_resource(Quote, "/ai-quotes", "/ai-quotes/", "/ai-quotes/<int:id>")
if __name__ == '__main__':
    app.run(debug=True)

ہماری REST API سروس تیار ہے!

اگلا، ہم کوڈ کو اس کمانڈ کے ساتھ کنسول میں چلا کر app.py فائل میں محفوظ کر سکتے ہیں:

python3 app.py

اگر سب کچھ ٹھیک ہے، تو ہمیں کچھ اس طرح ملے گا:

* ڈیبگ موڈ: آن
* چل رہا ہے۔ 127.0.0.1:5000/ (چھوڑنے کے لیے CTRL+C دبائیں)
* اسٹیٹ کے ساتھ دوبارہ شروع کرنا
* ڈیبگر فعال ہے!
* ڈیبگر پن: XXXXXXX

API کی جانچ کرنا

API بننے کے بعد، اسے جانچنے کی ضرورت ہے۔

یہ curl کنسول یوٹیلیٹی یا Insomnia REST کلائنٹ کا استعمال کرتے ہوئے، یا Rapid API پر API کو شائع کر کے کیا جا سکتا ہے۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

ہمارے API کو شائع کرنا

RapidAPI 10 سے زیادہ APIs (اور تقریباً 000 ملین ڈویلپرز) کے ساتھ دنیا کا سب سے بڑا بازار ہے۔

RapidAPI نہ صرف فریق ثالث APIs کے ساتھ کام کرنے کے لیے ایک واحد انٹرفیس فراہم کرتا ہے، بلکہ آپ کو اپنا API جلد اور آسانی سے شائع کرنے کی بھی اجازت دیتا ہے۔

کرنے کے لئے کرو، آپ کو پہلے اسے نیٹ ورک کے کسی سرور پر شائع کرنے کی ضرورت ہے۔ ہمارے معاملے میں، ہم استعمال کریں گے ہیروکو. اس کے ساتھ کام کرنے سے کوئی دشواری نہیں ہونی چاہیے،آپ یہاں اس کے بارے میں مزید جان سکتے ہیں۔).

ہیروکو پر اپنا API کیسے شائع کریں۔

1. ہیروکو انسٹال کریں۔

پہلا مرحلہ ہیروکو کمانڈ لائن انٹرفیس (CLI) کو رجسٹر اور انسٹال کرنا ہے۔ یہ Ubuntu 16+ پر کام کرتا ہے۔

sudo snap install heroku --classic

پھر ہم لاگ ان ہوتے ہیں:

ہیروکو لاگ ان

2. ضروری فائلیں شامل کریں۔

اب ہمیں اپنی درخواست کے فولڈر میں شائع کرنے کے لیے فائلوں کو شامل کرنے کی ضرورت ہے:

  • مطلوبہ ازگر کے ماڈیولز کی فہرست کے ساتھ requirements.txt؛
  • Procfile، جو یہ بتاتا ہے کہ ایپلی کیشن کو چلانے کے لیے کن کمانڈز کو عمل میں لانا ضروری ہے۔
  • .gitignore - ان فائلوں کو خارج کرنے کے لیے جن کی سرور پر ضرورت نہیں ہے۔

requirements.txt فائل میں درج ذیل لائنیں ہوں گی:

  • فلاسک
  • فلاسک آرام دہ
  • گنی کارن

براہ کرم نوٹ کریں کہ ہم نے گنی کارن (Python WSGI HTTP سرور) کو فہرست میں شامل کیا ہے کیونکہ ہمیں سرور پر اپنی ایپلیکیشن چلانے کی ضرورت ہے۔

پروفائل پر مشتمل ہوگا:

ویب: گنی کارن ایپ: ایپ

.gitignore کا مواد:

*.pyc
__pycache__/

اب جب کہ فائلیں بن چکی ہیں، آئیے گٹ ریپو کو شروع کریں اور کمٹ کریں:

git init
git add
git commit -m "First API commit"

3. ایک نئی ہیروکو ایپ بنائیں۔

heroku create

ماسٹر برانچ کو ریموٹ ہیروکو ریپو پر دھکیلنا:

git push heroku master

اب آپ کمانڈ کے ساتھ API سروس کھول کر شروع کر سکتے ہیں:

heroku ps:scale web=1
heroku open
 

API پر دستیاب ہوگا۔ your-random-heroku-name.herokuapp.com/ai-quotes.

اپنے Python API کو RapidAPI مارکیٹ پلیس میں کیسے شامل کریں۔

ہیروکو پر API سروس شائع ہونے کے بعد، آپ اسے Rapid API میں شامل کر سکتے ہیں۔ یہاں تفصیلی دستاویزات اس موضوع پر.

1. ایک RapidAPI اکاؤنٹ بنائیں۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

ہم ایک مفت اکاؤنٹ رجسٹر کرتے ہیں - یہ فیس بک، گوگل، گٹ ہب کا استعمال کرتے ہوئے کیا جا سکتا ہے۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

2. کنٹرول پینل میں API شامل کریں۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

3. اگلا، اپنے API کے بارے میں عمومی معلومات درج کریں۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

4. "Add API" پر کلک کرنے کے بعد ایک نیا صفحہ ظاہر ہوتا ہے جہاں آپ ہمارے API کے بارے میں معلومات درج کر سکتے ہیں۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

5. اب آپ یا تو دستی طور پر API کے اختتامی نقطوں کو داخل کر سکتے ہیں، یا ڈاؤن لوڈ کر سکتے ہیں۔ swagger فائل OpenAPI کا استعمال کرتے ہوئے

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

ٹھیک ہے، اب آپ کو Endpoints صفحہ پر ہمارے API کے اختتامی پوائنٹس سیٹ کرنے کی ضرورت ہے۔ ہمارے معاملے میں، اختتامی نکات CRUD (حاصل کریں، پوسٹ کریں، ڈالیں، حذف کریں) کے تصور سے مطابقت رکھتے ہیں۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

اس کے بعد، آپ کو ایک GET AI اقتباس اختتامی نقطہ بنانے کی ضرورت ہے جو ایک بے ترتیب اقتباس (اگر ID ڈیفالٹ ہے) یا مخصوص ID کے لیے ایک اقتباس دکھاتا ہے۔

اینڈ پوائنٹ بنانے کے لیے، آپ کو "Create Endpoint" بٹن پر کلک کرنے کی ضرورت ہے۔

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

ہم اس عمل کو دیگر تمام API اینڈ پوائنٹس کے لیے دہراتے ہیں۔ بس! مبارک ہو، آپ نے اپنا API شائع کیا ہے!

اگر سب کچھ ٹھیک رہا تو، API صفحہ کچھ اس طرح نظر آئے گا:

ازگر میں ایک API لکھنا (فلاسک اور RapidAPI کے ساتھ)

حاصل يہ ہوا

اس مضمون میں، ہم نے Python میں اپنی RESTful API سروس بنانے کے عمل کے ساتھ ساتھ API کو Heroku کلاؤڈ پر شائع کرنے اور اسے RapidAPI ڈائریکٹری میں شامل کرنے کے عمل سے گزرا۔

لیکن ٹیسٹ ورژن میں، API کی ترقی کے صرف بنیادی اصولوں کو دکھایا گیا تھا - اس طرح کی باریکیوں جیسے سیکورٹی، فالٹ ٹولرنس اور اسکیل ایبلٹی پر غور نہیں کیا گیا۔

ایک حقیقی API تیار کرتے وقت، ان سب کو مدنظر رکھنا ضروری ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں