په Python کې د API لیکل (د فلاسک او RapidAPI سره)

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

که تاسو دا مقاله لولئ ، تاسو شاید دمخه د هغه امکاناتو سره آشنا یاست چې د API (د غوښتنلیک برنامې انٹرفیس) کارولو پرمهال خلاصیږي.

ستاسو غوښتنلیک ته د ډیری عامه APIs څخه یو اضافه کولو سره ، تاسو کولی شئ د دې غوښتنلیک فعالیت وغزوئ یا د اړین ډیټا سره ضمیمه کړئ. مګر که تاسو یو ځانګړی خصوصیت رامینځته کړی وي چې تاسو غواړئ د ټولنې سره شریک کړئ؟

ځواب ساده دی: تاسو اړتیا لرئ خپل API جوړ کړئ.

پداسې حال کې چې دا ممکن په لومړي سر کې یو ستونزمن کار ښکاري، دا واقعیا خورا ساده دی. موږ به تاسو ته وښیو چې دا څنګه د Python سره ترسره کړو.

هغه څه چې تاسو یې پیل کولو ته اړتیا لرئ

د API پراختیا ته اړتیا لري:

  • پیتون۳;
  • فلسک - د ویب غوښتنلیکونو د جوړولو لپاره یو ساده او د کارولو اسانه چوکاټ؛
  • فلاسک - آرام د فلاسک لپاره تمدید دی چې تاسو ته اجازه درکوي په چټکۍ او لږترلږه ترتیب سره REST API رامینځته کړئ.

نصب کول د قوماندې لخوا ترسره کیږي:

pip install flask-restful

موږ د پیل کونکو لپاره وړیا ژور پروګرام وړاندیز کوو:
په C# کې د ټیلیګرام بوټ پراختیا – د اګست ۲۶ – ۲۸. یو وړیا ګړندی چې تاسو ته اجازه درکوي پوه شئ چې څنګه مرستندویه بوټونه کار کوي ، د ټیلیګرام API سره د کار کولو ځانګړتیاوې او نور لنډیزونه. درې غوره برخه اخیستونکي به د سکل باکس څخه 30 روبل ترلاسه کړي.

مخکې له دې چې تاسو پیل کړئ

موږ د بنسټیز سره RESTful API ته وده ورکوو د CRUID فعالیت.

د کار په بشپړه توګه درک کولو لپاره، راځئ چې پورته ذکر شوي دوه اصطلاحات پوه شو.

REST څه شی دی؟

REST API (د نمایندګۍ ریاست لیږد) یو API دی چې د معلوماتو تبادلې لپاره HTTP غوښتنې کاروي.

REST APIs باید ځینې معیارونه پوره کړي:

  • د پیرودونکي سرور جوړښت: پیرودونکي د کارونکي انٹرفیس سره تعامل کوي ، او سرور د بیک اینڈ او ډیټا سټور سره تعامل کوي. پیرودونکي او سرور خپلواک دي، هر یو له بل څخه جلا بدل کیدی شي.
  • بې ریاسته - په سرور کې د پیرودونکي هیڅ معلومات ندي زیرمه شوي. د سیشن حالت د پیرودونکي اړخ کې زیرمه شوی.
  • د کیچ وړتیا - پیرودونکي کولی شي د عمومي فعالیت ښه کولو لپاره د سرور ځوابونه ذخیره کړي.

CRUD څه شی دی؟

RAW د پروګرام کولو مفهوم دی چې څلور بنسټیز عملونه بیانوي (جوړول، لوستل، تازه کول او حذف کول).

په 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)

په دې ټوټه کې، فلاسک، Api او سرچینې هغه ټولګي دي چې موږ ورته اړتیا لرو.

Reqparse د فلاسک - RESTful غوښتنه پارس کولو انٹرفیس دی ... تاسو به د تصادفي نرخ ښودلو لپاره تصادفي ماډل ته هم اړتیا ولرئ.

اوس به موږ د 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 که ننوتل ونه موندل شي.

اوس راځئ چې ذخیره ته د نوي نرخ اضافه کولو لپاره د POST میتود رامینځته کړو

دا به د هرې نوې اقتباس 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

په پورته کوډ کې، د POST طریقه د نرخ 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 کوډ سره به نوی ریکارډ رامینځته شي.

په نهایت کې ، راځئ چې د یوې اقتباس لرې کولو لپاره د حذف کولو میتود رامینځته کړو چې نور الهام نده.

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 فشار ورکړئ)
* د سټیټ سره بیا پیل کول
* ډیبګر فعال دی!
* Debugger PIN: XXXXXXX

د API ازموینه

د API رامینځته کیدو وروسته ، دا باید ازموینه وشي.

دا د curl کنسول افادیت یا Insomnia REST پیرودونکي په کارولو سره ترسره کیدی شي ، یا په ریپډ API کې د API په خپرولو سره.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

زموږ API خپرول

RapidAPI د 10 APIs (او شاوخوا 000 ملیون پراختیا کونکي) سره په نړۍ کې ترټولو لوی بازار دی.

RapidAPI نه یوازې د دریمې ډلې APIs سره کار کولو لپاره یو واحد انٹرفیس چمتو کوي ، بلکه تاسو ته اجازه درکوي په ګړندۍ او اسانۍ سره خپل API خپور کړئ.

د دې لپاره ويې کړه، تاسو لومړی اړتیا لرئ دا په شبکه کې ځینې سرور ته خپور کړئ. زموږ په قضیه کې، موږ به وکاروو هیروکو. د هغه سره کار کول باید د کوم مشکل لامل نه شي،تاسو کولی شئ دلته د هغې په اړه نور معلومات ترلاسه کړئ).

څنګه خپل API په هیروکو کې خپور کړئ

1. هیروکو نصب کړئ.

لومړی ګام د هیروکو کمانډ لاین انٹرفیس (CLI) راجستر او نصب کول دي. دا په اوبنټو 16+ کې کار کوي.

sudo سنیپ هیروکو --کلاسیک نصب کړئ

بیا موږ ننوتل:

هیروکو ننوتل

2. اړین فایلونه اضافه کړئ.

اوس موږ اړتیا لرو چې زموږ په غوښتنلیک کې فولډر ته د خپرولو لپاره فایلونه اضافه کړو:

  • requirements.txt د Python د اړتیا وړ ماډلونو لیست سره؛
  • پروفایل، کوم چې مشخص کوي چې کوم حکمونه باید د غوښتنلیک چلولو لپاره اجرا شي؛
  • .gitignore - د فایلونو لرې کولو لپاره چې سرور ته اړتیا نلري.

د requirements.txt فایل به لاندې لینونه ولري:

  • فلاسک
  • فلاسک آرام
  • ګونی کورن

مهرباني وکړئ په یاد ولرئ چې موږ په لیست کې ګونیکورن (Python WSGI HTTP سرور) اضافه کړی ځکه چې موږ اړتیا لرو خپل غوښتنلیک په سرور کې پرمخ بوځو.

پروفایل به ولري:

ویب: gunicorn app:app

د .gitignore منځپانګه:

*.pyc
__pycache__/

اوس چې فایلونه رامینځته شوي ، راځئ چې د git ریپو پیل کړو او ژمنې وکړو:

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 خدمت په هیروکو کې خپور شي ، تاسو کولی شئ دا په ریپډ API کې اضافه کړئ. دلته تفصيلي اسناد په دې موضوع.

1. د RapidAPI حساب جوړ کړئ.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

موږ وړیا حساب راجستر کوو - دا د فیسبوک، ګوګل، ګیټ هب په کارولو سره ترسره کیدی شي.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

2. د کنټرول پینل ته API اضافه کړئ.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

3. بیا، د خپل API په اړه عمومي معلومات داخل کړئ.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

4. د "Add API" کلیک کولو وروسته یوه نوې پاڼه راښکاره کیږي چیرې چې تاسو کولی شئ زموږ د API په اړه معلومات داخل کړئ.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

5. اوس تاسو کولی شئ په لاسي ډول د API پای ټکي دننه کړئ، یا ډاونلوډ کړئ swagger فایل د OpenAPI کارول.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

ښه، اوس تاسو اړتیا لرئ چې زموږ د API پای ټکي د پای ټکي پاڼې کې تنظیم کړئ. زموږ په قضیه کې، پای ټکي د CRUD مفهوم سره مطابقت لري (ترلاسه کړئ، پوسټ کړئ، واچوئ، حذف کړئ).

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

بیا ، تاسو اړتیا لرئ د GET AI نرخ پای ټکی رامینځته کړئ چې یو تصادفي نرخ ښیي (که چیرې ID ډیفالټ وي) یا د ټاکل شوي ID لپاره اقتباس.

د پای ټکی رامینځته کولو لپاره ، تاسو اړتیا لرئ د "پای ټکی رامینځته کړئ" تڼۍ کلیک وکړئ.

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

موږ دا پروسه د ټولو نورو API پای نقطو لپاره تکرار کوو. بس نور څه نه! مبارک، تاسو خپل API خپور کړ!

که هرڅه سم وي، د API پاڼه به داسې ښکاري:

په Python کې د API لیکل (د فلاسک او RapidAPI سره)

پایلې

پدې مقاله کې ، موږ په پایتون کې د خپل RESTful API خدمت رامینځته کولو پروسې ته لاړو ، د هیروکو کلاوډ ته د API خپرولو پروسې سره او د RapidAPI لارښود کې یې اضافه کولو پروسې سره.

مګر د ازموینې نسخه کې، یوازې د API پراختیا بنسټیز اصول ښودل شوي - د امنیت، غلطی زغم او توزیع کولو په څیر ورته لنډیزونه په پام کې ندي نیول شوي.

کله چې د ریښتیني API رامینځته کول ، دا ټول باید په پام کې ونیول شي.

سرچینه: www.habr.com

Add a comment