Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Haddii aad akhrinayso maqaalkan, waxa ay u badan tahay in aad horeba u garanaysay suurtogalnimada ku imanaysa isticmaalka API (Application Programming Interface).

Markaad ku darto mid ka mid ah API-yada badan ee furan codsigaaga, waxaad kordhin kartaa shaqeynta codsiga ama waxaad ku kobcin kartaa xogta lagama maarmaanka ah. Laakiin ka waran haddii aad soo saartay muuqaal gaar ah oo aad rabto inaad la wadaagto bulshada?

Jawaabtu waa sahlan tahay: waxaad u baahan tahay samee API adiga kuu gaar ah.

In kasta oo ay tani u ekaan karto hawl adag marka hore, dhab ahaantii way fududahay. Waxaan ku tusi doonaa sida tan loo sameeyo anagoo adeegsanayna Python.

Waxa aad u baahan tahay si aad u bilowdo

Si aad u horumariso API waxaad u baahan tahay:

  • Python 3;
  • Flask - qaab fudud oo sahlan in la isticmaalo oo loogu talagalay abuurista codsiyada shabakadda;
  • Calan-RESTful waa kordhinta Flask kaas oo kuu ogolaanaya inaad si dhakhso leh u horumariso REST API oo leh qaabayn yar.

Rakibaadda waxaa lagu sameeyaa amarka:

pip install flask-restful

Waxaan ku talinaynaa koorsada barnaamijka degdega ah ee bilaashka ah ee bilowga ah:
Horumarinta bot ee Telegram ee C # - Ogosto 26-28. Koorso degdeg ah oo bilaash ah oo kuu ogolaanaya inaad fahanto sida bots-ka caawiyaha u shaqeeyaan, waxyaabaha gaarka ah ee la shaqaynta Telegram API iyo nuances kale. Saddexda kaqeybgalayaasha ugu fiican waxay heli doonaan 30 rubles Skillbox.

Kahor intaadan bilaabin

Waxaan soo saareynaa API RESTful leh oo aasaasi ah Shaqada CRUID.

Si aan si buuxda u fahamno hawsha, aynu fahanno labada erey ee kor ku xusan.

Waa maxay nasasho?

REST API (Wakiilka Gobolka Wakiil) waa API adeegsada codsiyada HTTP si ay xogta isku dhaafsadaan.

REST APIs waa inay buuxiyaan shuruudaha qaarkood:

  • Client-server architecture: Macmiilku waxa uu la falgalaa interface-ka isticmaalaha, iyo server-ku waxa uu la falgalaa dhabarka iyo kaydinta xogta. Macmiilka iyo server-ka waa madaxbannaan yihiin, mid kasta oo iyaga ka mid ah ayaa loo beddeli karaa si gooni ah kan kale.
  • Dawlad la'aan - ma jiro xogta macmiilka lagu kaydiyo serverka. Xaaladda kulanka waxa lagu kaydiyaa dhinaca macmiilka.
  • Cacheability - Macaamiishu waxay kaydin karaan jawaabaha server-ka si ay u horumariyaan waxqabadka guud.

Waa maxay CRUD?

RAW waa fikrad barnaamij oo qeexaya afar fal oo aasaasi ah (abuur, akhri, cusbooneysiin iyo tirtir).

Gudaha REST API, noocyada codsiga iyo hababka codsashada ayaa mas'uul ka ah falalka sida dhejinta, hel, dhejinta, tirtirka.

Hadda oo aan fahamno shuruudaha aasaasiga ah, waxaan bilaabi karnaa abuurista API.

Horumarinta

Aynu abuurno kayd oraahyo ku saabsan sirdoonka macmal ah. AI waa mid ka mid ah tignoolajiyada ugu dhaqsaha badan maanta, Python-na waa aalad caan ah oo lagula shaqeeyo AI.

API-gan, horumariyaha Python wuxuu si dhakhso leh u heli karaa macluumaadka ku saabsan AI wuxuuna ku dhiirigelin karaa horumarro cusub. Haddii horumariye uu fikrado qiimo leh ka haysto mawduucan, wuxuu awoodi doonaa inuu ku daro kaydka.

Aan ku bilowno soo dejinta qaybaha lagama maarmaanka ah iyo dejinta Flask:

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

Qaybtan yar, Flask, Api iyo Resource waa fasallada aan u baahanahay.

Reqparse waa falanqeynta weydiinta Flask-RESTful... Waxaad sidoo kale u baahan doontaa module random si aad u muujiso xigasho random.

Hadda waxaan abuuri doonaa kaydka oraahyada ku saabsan AI.

Gelitaan kasta oo repo ah wuxuu ka koobnaan doonaa:

  • Aqoonsiga dhijitaalka ah;
  • magaca qoraaga xigashada;
  • xigasho.

Maadaama kani uu yahay kaliya tusaale tabobar, waxaanu ku kaydin doonaa dhammaan gelinta liiska Python. Codsiga dhabta ah, waxay u badan tahay inaan isticmaalno keydka macluumaadka.

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."
    }
]

Hadda waxaan u baahanahay inaan abuurno fasalka kheyraadka Quote kaas oo qeexi doona hawlaha API-ga dhamaadka. Gudaha fasalka waxaad u baahan tahay inaad ku dhawaaqdo afar hab: hel, dheji, dheji, tirtir.

Aan ku bilowno habka GET

Waxay suurtogal ka dhigaysaa in la helo xigasho gaar ah iyada oo caddaynaysa aqoonsigeeda, ama xigasho random haddii aqoonsiga aan la cayimin.

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

Habka GET wuxuu soo celinayaa xigasho random haddii aqoonsigu ka kooban yahay qiimaha caadiga ah, i.e. wax aqoonsi ah lama cayimin marka la wacayo habka.

Haddii la cayimay, markaa habka ayaa ka dhex raadiya xigashooyinka oo wuxuu helaa midka ka kooban aqoonsiga la cayimay. Haddii aan waxba la helin, farriinta "Xigasho lama helin, 404" waa la soo bandhigayaa.

Xasuusnoow: habku wuxuu soo celinayaa heerka HTTP 200 haddii codsigu ahaa mid guulaystay iyo 404 haddii diiwaanka aan la helin.

Hadda aan abuurno habka POST si aan ugu darno xigasho cusub kaydka

Waxay heli doontaa aqoonsiga xigasho kasta oo cusub markaad wax qorto. Intaa waxaa dheer, POST waxay isticmaali doontaa reqparse si ay u kala saarto cabbirada geli doona jidhka codsiga (qoraaga iyo xigashada qoraalka).

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

Koodhka kore, habka POST wuxuu aqbalay aqoonsiga xigashada. Dabadeed, iyadoo adeegsanaysa reqparse, waxay ka soo saartay qoraaga iyo xigashada weydiinta, iyada oo ku kaydisa qaamuuska params.

Haddii xigasho wadata aqoonsiga la cayimay ay hore u jirtay, habku waxa uu soo bandhigayaa fariin u dhiganta iyo koodka 400.

Haddii tixraac leh aqoonsiga la cayimay aan weli la abuurin, habku wuxuu abuuraa rikoodh cusub oo leh aqoonsiga iyo qoraaga la cayimay, iyo sidoo kale cabbirro kale. Kadib waxay ku dartay gelitaanka liiska ai_quotes oo waxay ku soo celinaysaa gelitaanka xigashada cusub oo ay la socoto koodka 201.

Hadda waxaan abuurnaa habka PUT si aan u bedelno oraahda jirta ee kaydka

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

Habka PUT, oo la mid ah tusaalihii hore, wuxuu qaataa aqoonsiga iyo gelinta oo wuxuu turjumaa qiyaasaha xigashada iyadoo la isticmaalayo reqparse.

Haddii xigasho leh aqoonsiga la cayimay uu jiro, habka ayaa ku cusbooneysiin doona cabbirada cusub ka dibna soo saari doona xigashada la cusboonaysiiyay oo leh koodka 200. Haddii aan weli la helin tixraac aqoonsi la cayimay, rikoor cusub oo kood 201 ah ayaa la abuuri doonaa.

Ugu dambayntii, aan abuurno hab DELETE si aan meesha uga saarno xigashada aan hadda dhiirigelin

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

Habkani waxa uu u helayaa aqoonsiga xigashada sida gelinta oo waxa uu cusboonaysiiyaa liiska ai_quotes iyada oo la isticmaalayo liiska la wadaago.

Hadda oo aan abuurnay dhammaan hababka, waxa kaliya ee aan u baahanahay inaan sameyno ayaa ah inaan ku darno kheyraad API-ga, dejino dariiqa, oo aan wadno Flask.

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

Adeegeena REST API waa diyaar!

Marka xigta, waxaan ku keydin karnaa koodhka faylka app.py annagoo ku dhex socodsiina konsole iyadoo la adeegsanayo amarka:

python3 app.py

Haddii wax walba ay wanaagsan yihiin, markaa waxaan heli doonaa wax sidan oo kale ah:

* Qaabka qaladka: shid
*Orodayaa 127.0.0.1: 5000/ (Riix CTRL+C si aad u joojiso)
* Ku soo laabashada xogta
* Debugger waa firfircoon yahay!
* Furaha furaha: XXXXXXX

Tijaabinta API-ga

Marka API la sameeyo, waxay u baahan tahay in la tijaabiyo.

Tan waxa lagu samayn karaa iyada oo la isticmaalayo utility console-ka curlka ama macmiilka hurdo la'aanta REST, ama iyada oo API lagu daabacayo API degdeg ah.

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Daabacaadda API-gayada

RapidAPI waa suuqa ugu weyn aduunka oo leh in ka badan 10 APIs (iyo ilaa 000 milyan oo horumariye ah).

RapidAPI kaliya ma bixiso hal interface oo lagula shaqeeyo API-yada qolo saddexaad, laakiin sidoo kale waxay ku siinaysaa awood aad si dhakhso ah oo fudud u daabacdo API-gaaga.

Si aad u in tan la sameeyo, marka hore waxaad u baahan tahay inaad ku daabacdo server-yada shabakada qaarkood. Xaaladeena waan isticmaali doonaa Heroku. La shaqaynteeda waa inaanay keenin wax dhibaato ah, (waxaad ka heli kartaa wax badan oo ku saabsan isaga halkan).

Sida loo daabaco API-gaaga Heroku

1. Ku rakib Heroku.

Tallaabada ugu horreysa waa in la diiwaan geliyo oo la rakibo Heroku Command Interface Interface (CLI). Tani waxay ka shaqeysaa Ubuntu 16+.

sudo snap install heroku β€”classic

Kadib gal:

heroku login

2. Ku dar faylasha lagama maarmaanka ah.

Hadda waxaan u baahanahay inaan ku darno faylalka lagu daabici doono galka codsigayaga:

  • shuruudaha.txt oo wata liiska qaybaha Python ee loo baahan yahay;
  • Procfile, kaas oo qeexaya amarrada ay tahay in la fuliyo si codsiga loo fuliyo;
  • .gitignore - si looga saaro faylasha aan looga baahnayn server-ka.

Faylka shuruudaha.txt wuxuu ka koobnaan doonaa khadadka soo socda:

  • dharka
  • dhalo-nasasho
  • gunicorn

Fadlan ogow inaan liiska ku darnay gunicorn (Python WSGI HTTP Server) sababtoo ah waxaan u baahanahay inaan ku socodsiino codsigeena server-ka.

Procfigu wuxuu ka koobnaan doonaa:

web: gunicorn app:app

Nuxurka .gitignore:

*.pyc
__pycache__/

Hadda oo faylasha la abuuray, aynu bilowno git repo oo aynu galno:

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

3. Samee codsi cusub oo Heroku ah.

heroku create

Waxaan u riixnay laanta sayidka ee Heroku repo ee fog:

git push heroku master

Hadda waxaad ku bilaabi kartaa furitaanka Adeegga API adoo isticmaalaya amarada:

heroku ps:scale web=1
heroku open
 

API-ga waxaa laga heli karaa your-random-heroku-name.herokuapp.com/ai-quotes.

Sida loogu daro Python API-gaaga goobta suuqa ee RapidAPI

Marka adeegga API lagu daabaco Heroku, waxaad ku dari kartaa API-ga Degdegga ah. Halkan dukumeenti faahfaahsan mawduucan.

1. Samee akoon RapidAPI

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Diiwaangeli akoon bilaash ah - tan waxaa lagu samayn karaa Facebook, Google, GitHub.

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

2. Ku dar API-ga guddiga kantaroolka.

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

3. Marka xigta, geli macluumaadka guud ee API-gaaga.

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

4. Kadib markaad gujiso "Add API" waxaa kuu soo baxaya bog cusub oo aad geli karto macluumaadka API-gayada.

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

5. Hadda waxaad gacanta ku geli kartaa barta dhamaadka API ama soo dejin kartaa swagger-faylka isticmaalaya OpenAPI.

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Hagaag, hadda waxaan u baahanahay inaan dejino qodobada ugu dambeeya API ee bogga Endpoints. Xaaladeena, dhibcaha dhamaadka waxay u dhigmaan fikradda CRUD (hel, dheji, dheji, tirtir).

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Marka xigta, waxaad u baahan tahay inaad abuurto GET AI Quote dhamaadka kaas oo soo bandhigaya xigasho random (haddii aqoonsiga uu yahay mid caadi ah) ama xigasho aqoonsiga la cayimay.

Si aad u abuurto barta dhamaadka, dhagsii badhanka "Create Endpoint".

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

Waxaan ku celineynaa nidaamkan dhammaan dhibcaha kale ee API. Waa intaas! Hambalyo, waxaad daabacday API-gaaga!

Haddii wax walba ay wanaagsan yihiin, bogga API wuxuu u ekaan doonaa wax sidan oo kale ah:

Ku qoritaanka API Python (oo wata Flask iyo RapidAPI)

gunaanad

Maqaalkan, waxaan ku baranay habka abuurista adeeggaaga RESTful API ee Python, oo ay la socoto habka daabacaadda API ee daruuraha Heroku oo lagu daro hagaha RapidAPI.

Laakiin nooca tijaabada ayaa muujiyay kaliya mabaadi'da aasaasiga ah ee horumarinta API - nuucyada ay ka midka yihiin amniga, dulqaadka qaladka iyo cabirka lama tixgelin.

Markaad horumarinayso API-ga dhabta ah, waxaas oo dhan waxay u baahan yihiin in xisaabta lagu daro.

Source: www.habr.com

Add a comment