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).
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
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.
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.
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
Diiwaangeli akoon bilaash ah - tan waxaa lagu samayn karaa Facebook, Google, GitHub.
2. Ku dar API-ga guddiga kantaroolka.
3. Marka xigta, geli macluumaadka guud ee API-gaaga.
4. Kadib markaad gujiso "Add API" waxaa kuu soo baxaya bog cusub oo aad geli karto macluumaadka API-gayada.
5. Hadda waxaad gacanta ku geli kartaa barta dhamaadka API ama soo dejin kartaa swagger-faylka isticmaalaya OpenAPI.
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).
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".
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:
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.