پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

جيڪڏهن توهان هي مضمون پڙهي رهيا آهيو، توهان شايد اڳ ۾ ئي انهن امڪانن کان واقف آهيو جيڪي API (ايپليڪيشن پروگرامنگ انٽرفيس) استعمال ڪرڻ سان ايندا آهن.

توهان جي ايپليڪيشن ۾ ڪيترن ئي کليل APIs مان هڪ شامل ڪرڻ سان، توهان ايپليڪيشن جي ڪارڪردگي کي وڌائي سگهو ٿا يا ضروري ڊيٽا سان ان کي بهتر بڻائي سگهو ٿا. پر جيڪڏهن توهان هڪ منفرد خصوصيت ٺاهي ته توهان ڪميونٽي سان حصيداري ڪرڻ چاهيو ٿا؟

جواب سادو آهي: توهان کي ضرورت آهي پنهنجو API ٺاهيو.

جيتوڻيڪ اهو لڳي سگھي ٿو ته پهرين ۾ هڪ مشڪل ڪم وانگر، اهو اصل ۾ سادو آهي. اسان توهان کي ڏيکارينداسين ته اهو ڪيئن ڪجي Python استعمال ڪندي.

جيڪو توهان کي شروع ڪرڻ جي ضرورت آهي

هڪ API کي ترقي ڪرڻ لاء توهان کي ضرورت آهي:

  • پٿون 3؛
  • فلاس - ويب ايپليڪيشن ٺاهڻ لاءِ هڪ سادي ۽ استعمال ۾ آسان فريم ورڪ؛
  • فلاسڪ- آرام سان فلاسڪ لاءِ هڪ ايڪسٽينشن آهي جيڪا توهان کي جلدي ۽ گهٽ ۾ گهٽ ترتيب سان هڪ REST API تيار ڪرڻ جي اجازت ڏئي ٿي.

انسٽاليشن حڪم سان ڪيو ويندو آهي:

pip install flask-restful

اسان سفارش ڪريون ٿا مفت گھڻائي پروگرامنگ ڪورس شروع ڪندڙن لاءِ:
سي # ۾ ٽيليگرام بوٽ ڊولپمينٽ - آگسٽ 26-28. هڪ مفت شديد ڪورس جيڪو توهان کي سمجهڻ جي اجازت ڏئي ٿو ته اسسٽنٽ بوٽس ڪيئن ڪم ڪن ٿا، ٽيليگرام API سان ڪم ڪرڻ جون خاصيتون ۽ ٻيون بارون. ٽي بهترين شرڪت ڪندڙ Skillbox مان 30 روبل وصول ڪندا.

توهان کان اڳ شروع

اسان بنيادي سان گڏ هڪ RESTful API تيار ڪرڻ وارا آهيون CRUID ڪارڪردگي.

ڪم کي مڪمل طور سمجهڻ لاءِ، اچو ته مٿي ذڪر ڪيل ٻن اصطلاحن کي سمجھون.

REST ڇا آهي؟

REST API (نمائندگي واري رياست جي منتقلي) ھڪڙو API آھي جيڪو ڊيٽا کي مٽائڻ لاء HTTP درخواستون استعمال ڪري ٿو.

REST APIs کي ڪجهه معيار پورا ڪرڻ گهرجن:

  • ڪلائنٽ-سرور آرڪيٽيڪچر: ڪلائنٽ يوزر انٽرفيس سان رابطو ڪري ٿو، ۽ سرور پس منظر ۽ ڊيٽا اسٽوريج سان لهه وچڙ ۾ اچي ٿو. ڪلائنٽ ۽ سرور آزاد آهن، انهن مان ڪنهن کي ٻئي کان الڳ الڳ تبديل ڪري سگهجي ٿو.
  • بي رياست - ڪو به ڪلائنٽ ڊيٽا سرور تي محفوظ نه آهي. سيشن اسٽيٽ ڪلائنٽ جي پاسي تي ذخيرو ٿيل آهي.
  • Cacheability - ڪلائنٽ مجموعي ڪارڪردگي کي بهتر ڪرڻ لاء سرور جي جوابن کي ڪيش ڪري سگھن ٿا.

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)

هن ٽڪڙي ۾، فلاسڪ، ايپي ۽ وسيلا اهي طبقا آهن جن جي اسان کي ضرورت آهي.

Reqparse هڪ Flask-RESTful query parsing interface آهي... توهان کي بي ترتيب اقتباس ڏيکارڻ لاءِ به هڪ بي ترتيب ماڊل جي ضرورت پوندي.

ھاڻي اسان ٺاھينداسين AI بابت حوالن جو ذخيرو.

هر ريپو داخلا تي مشتمل هوندي:

  • ڊجيٽل ID؛
  • اقتباس جي ليکڪ جو نالو؛
  • اقتباس

جيئن ته هي صرف هڪ تربيتي مثال آهي، اسان سڀني داخلن کي Python لسٽ ۾ ذخيرو ڪنداسين. هڪ حقيقي ايپليڪيشن ۾، اسان ممڪن طور تي هڪ ڊيٽابيس استعمال ڪنداسين.

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

GET طريقو هڪ بي ترتيب اقتباس واپس ڏئي ٿو جيڪڏهن ID ۾ ڊفالٽ قيمت شامل آهي، يعني. ڪو به ID بيان نه ڪيو ويو آهي جڏهن طريقي کي سڏيندي.

جيڪڏهن اهو بيان ڪيو ويو آهي، پوء اهو طريقو حوالن جي وچ ۾ ڳولهي ٿو ۽ اهو ڳولي ٿو جيڪو مخصوص ID تي مشتمل آهي. جيڪڏهن ڪجھ به نه مليو، پيغام "اقتباس نه مليو، 404" ڏيکاريل آهي.

ياد رکو: طريقو 200 جي HTTP اسٽيٽس واپس ڏئي ٿو جيڪڏهن درخواست ڪامياب ٿي وئي ۽ 404 جيڪڏهن رڪارڊ نه مليو.

هاڻي اچو ته هڪ پوسٽ جو طريقو ٺاهيو ته جيئن مخزن ۾ هڪ نئون اقتباس شامل ڪيو وڃي

اهو توهان جي ٽائپ ڪندي هر نئين اقتباس جي ID حاصل ڪندو. ان کان علاوه، 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

مٿي ڏنل ڪوڊ ۾، پوسٽ جو طريقو اقتباس جي ID قبول ڪيو. ان کان پوء، reqparse استعمال ڪندي، هن سوال مان مصنف ۽ حوالن کي ٻيهر حاصل ڪيو، انهن کي پارمس ڊڪشنري ۾ محفوظ ڪيو.

جيڪڏهن مخصوص 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 ڪلائنٽ، يا ريپڊ API تي API شايع ڪندي.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

اسان جي API شايع ڪرڻ

RapidAPI 10 APIs (۽ اٽڪل 000 ملين ڊولپرز) سان گڏ دنيا جي سڀ کان وڏي مارڪيٽ آھي.

RapidAPI نه صرف ٽئين پارٽي APIs سان ڪم ڪرڻ لاءِ هڪ واحد انٽرفيس مهيا ڪري ٿو، پر توهان کي توهان جي پنهنجي API کي جلدي ۽ آساني سان شايع ڪرڻ جي صلاحيت پڻ ڏئي ٿي.

ڪرڻ لاء ائين ڪرڻ، توهان کي پهريان ان کي شايع ڪرڻ جي ضرورت آهي نيٽ ورڪ تي ڪجهه سرور تي. اسان جي صورت ۾ استعمال ڪنداسين هيڪوڪو. ان سان گڏ ڪم ڪرڻ ۾ ڪا به مشڪلات نه هجڻ گهرجي، (توهان هن جي باري ۾ وڌيڪ ڳولي سگهو ٿا هتي).

هيروڪو تي پنهنجو API ڪيئن شايع ڪجي

1. Heroku انسٽال ڪريو.

پهريون قدم هيروڪو ڪمانڊ لائن انٽرفيس (CLI) رجسٽر ڪرڻ ۽ انسٽال ڪرڻ آهي. اهو Ubuntu 16+ تي ڪم ڪري ٿو.

sudo snap install heroku -classic

پوء لاگ ان:

heroku لاگ ان

2. ضروري فائلون شامل ڪريو.

هاڻي اسان کي اسان جي ايپليڪيشن ۾ فولڊر ۾ شايع ٿيڻ لاء فائلون شامل ڪرڻ جي ضرورت آهي:

  • requirements.txt گهربل پٿون ماڊلز جي فهرست سان؛
  • Procfile، جيڪو بيان ڪري ٿو ته ايپليڪيشن کي هلائڻ لاءِ ڪهڙن حڪمن تي عمل ٿيڻ گهرجي؛
  • .gitignore - فائلن کي خارج ڪرڻ لاء جيڪي سرور تي گهربل نه آھن.

Requiments.txt فائل ھيٺين لائينن تي مشتمل هوندي:

  • فلاسڪ
  • آرام واري فلاسڪ
  • گني ڪارن

مهرباني ڪري نوٽ ڪريو ته اسان gunicorn (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.

RapidAPI مارڪيٽ ۾ پنهنجو پٿون API ڪيئن شامل ڪجي

هڪ دفعو توهان جي API سروس هيروڪو تي شايع ٿيل آهي، توهان ان کي Rapid API ۾ شامل ڪري سگهو ٿا. هتي تفصيلي دستاويز هن موضوع تي.

1. RapidAPI اڪائونٽ ٺاهيو.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

هڪ مفت اڪائونٽ رجسٽر ڪريو - اهو ڪري سگهجي ٿو Facebook، Google، GitHub استعمال ڪندي.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

2. ڪنٽرول پينل ۾ API شامل ڪريو.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

3. اڳيون، توهان جي API بابت عام معلومات داخل ڪريو.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

4. ”Add API“ تي ڪلڪ ڪرڻ کان پوءِ هڪ نئون صفحو ظاهر ٿيندو جتي توهان اسان جي API بابت معلومات داخل ڪري سگهو ٿا.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

5. ھاڻي توھان يا ته دستي طور تي API جي آخر پوائنٽ داخل ڪري سگھو ٿا يا ڊائون لوڊ ڪري سگھو ٿا swagger-فائل OpenAPI استعمال ڪندي.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

خير، ھاڻي اسان کي پنھنجي API جي آخري پوائنٽس کي مقرر ڪرڻ جي ضرورت آھي Endpoints صفحي تي. اسان جي صورت ۾، آخري پوائنٽون CRUD جي تصور سان ملن ٿيون (حاصل، پوسٽ، رکڻ، حذف).

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

اڳيون، توهان کي ٺاهڻ جي ضرورت آهي GET AI اقتباس آخر پوائنٽ جيڪو ڏيکاري ٿو بي ترتيب اقتباس (جيڪڏهن ID ڊفالٽ آهي) يا مخصوص ID لاءِ اقتباس.

آخر پوائنٽ ٺاھڻ لاءِ، ڪلڪ ڪريو ”انڊ پوائنٽ ٺاھيو“ بٽڻ.

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

اسان هن عمل کي ٻين سڀني API جي آخر پوائنٽن لاءِ ورجائيندا آهيون. اهو ئي سڀ ڪجهه آهي! مبارڪون هجن، توهان پنهنجو API شايع ڪيو آهي!

جيڪڏهن سڀ ڪجهه ٺيڪ آهي، API صفحو ڪجهه هن طرح نظر ايندو:

پٿون ۾ هڪ API لکڻ (فلاسڪ ۽ RapidAPI سان)

ٿڪل

هن آرٽيڪل ۾، اسان پٿون ۾ توهان جي پنهنجي RESTful API سروس ٺاهڻ جو عمل سکيو، هيروڪو ڪلائوڊ تي API کي شايع ڪرڻ ۽ ان کي RapidAPI ڊاريڪٽري ۾ شامل ڪرڻ جي عمل سان گڏ.

پر ٽيسٽ ورزن صرف API جي ترقي جا بنيادي اصول ڏيکاريا آهن - nuances جهڙوڪ سيڪيورٽي، غلطي رواداري ۽ اسڪاليبلٽي تي غور نه ڪيو ويو.

جڏهن هڪ حقيقي API ٺاهيندي، اهو سڀ ڪجهه حساب ۾ رکڻ جي ضرورت آهي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو