Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Raha mamaky an'ity lahatsoratra ity ianao dia mety ho efa zatra amin'ireo fahafahana misokatra rehefa mampiasa ny API (Application Programming Interface).

Amin'ny fampidirana ny iray amin'ireo API ho an'ny daholobe maro amin'ny fampiharanao dia azonao atao ny manitatra ny fiasan'ity fampiharana ity na manampy azy amin'ny angona ilaina. Ahoana anefa raha namorona endri-javatra miavaka tianao hozaraina amin'ny fiaraha-monina ianao?

Tsotra ny valiny: mila ianao mamorona API anao manokana.

Na dia toa asa sarotra aza izany amin'ny voalohany, dia tena tsotra. Hasehonay anao ny fomba hanaovana izany amin'ny Python.

Inona no ilainao hanombohana

Ny fampandrosoana API dia mitaky:

  • Python3;
  • tavoara - rafitra tsotra sy mora ampiasaina amin'ny famoronana rindranasa tranonkala;
  • Tavoahangy-MAINA dia fanitarana ho an'ny Flask izay ahafahanao manamboatra API REST haingana sy miaraka amin'ny fanamafisana kely indrindra.

Ny fametrahana dia atao amin'ny baiko:

pip install flask-restful

Manoro fandaharana maimaim-poana ho an'ny vao manomboka:
Fampandrosoana bot Telegram amin'ny C# β€” 26–28 aogositra. Mampihetsi-po maimaim-poana izay ahafahanao mahatakatra ny fomba fiasan'ny bots mpanampy, ny endri-javatra miasa amin'ny Telegram API sy ny nuances hafa. Ny mpandray anjara telo voalohany dia hahazo 30 roubles avy amin'ny Skillbox.

Alohan'ny hanombohanao

Hamolavola API RESTful miaraka amin'ny fototra isika Fampiasana CRUID.

Mba hahatakarana tsara ilay asa, andeha hojerentsika ireo teny roa voalaza etsy ambony.

Inona no atao hoe REST?

REST API (Representational State Transfer) dia API mampiasa ny fangatahana HTTP hanakalozana angona.

REST API dia tsy maintsy mahafeno fepetra sasany:

  • Architecture Client-server: ny mpanjifa dia mifandray amin'ny mpampiasa interface tsara, ary ny server dia mifandray amin'ny backend sy ny tahirin-kevitra. Ny mpanjifa sy ny mpizara dia mahaleo tena, ny tsirairay amin'izy ireo dia azo soloina misaraka amin'ny iray hafa.
  • Stateless - Tsy misy data mpanjifa voatahiry ao amin'ny server. Ny toetry ny session dia voatahiry amin'ny lafiny mpanjifa.
  • Cacheability - Ny mpanjifa dia afaka mitahiry ny valintenin'ny mpizara mba hanatsarana ny fahombiazan'ny ankapobeny.

Inona no atao hoe CRUD?

manta dia foto-kevitra fandaharana izay mamaritra hetsika fototra efatra (mamorona, mamaky, manavao ary mamafa).

Ao amin'ny REST API, ny karazana fangatahana sy ny fomba fangatahana dia tompon'andraikitra amin'ny hetsika toy ny mandefa, mahazo, mametraka, mamafa.

Amin'izao fotoana izao dia efa niatrika ireo fepetra fototra isika dia afaka manomboka mamorona ny API.

famolavolana

Andao hamorona tahirim-baovao momba ny faharanitan-tsaina artifisialy. AI dia iray amin'ireo teknolojia mitombo haingana indrindra ankehitriny, ary Python dia fitaovana malaza amin'ny fiaraha-miasa amin'ny AI.

Miaraka amin'ity API ity, ny mpamorona Python dia afaka mianatra haingana momba ny AI ary mahazo aingam-panahy amin'ny zava-bita vaovao. Raha manana hevitra sarobidy momba an'io lohahevitra io ny mpamorona, dia afaka manampy azy ireo amin'ny tahiry izy.

Andao hanomboka amin'ny fanafarana ireo maody ilaina sy ny fametrahana Flask:

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

Amin'ity sombiny ity, Flask, Api ary Resource no kilasy ilaintsika.

Reqparse dia Flask-RESTful fangatahana fanapariahana interface... Mila ny modely kisendrasendra ihany koa ianao mba hampisehoana teny tsy misy dikany.

Ankehitriny dia hamorona tahirim-baovao momba ny AI isika.

Ny fidirana repo tsirairay dia ahitana:

  • ID nomerika;
  • ny anaran'ny mpanoratra ny teny nalaina;
  • quote.

Satria ohatra fianarana fotsiny ity, dia hitahiry ny fidirana rehetra ao anaty lisitra Python izahay. Amin'ny fampiharana tena izy, dia azo inoana fa hampiasa angon-drakitra izahay.

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

Amin'izao fotoana izao dia mila mamorona kilasy loharanon-kevitra isika izay hamaritra ny fiasan'ny tondro-pifaranan'ny API. Fomba efatra no tsy maintsy ambara ao anatin'ny kilasy: mahazo, mandefa, mametraka, mamafa.

Andeha isika hanomboka amin'ny fomba GET

Izany dia ahafahanao mahazo quote manokana amin'ny alΓ lan'ny fanondroana ny ID azy, na quote kisendrasendra raha tsy misy ID voatondro.

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

Ny fomba GET dia mamerina teny kisendrasendra raha toa ka misy ny sanda default ny ID, i.e. rehefa niantso ny fomba ID tsy napetraka.

Raha apetraka izany, dia mikaroka eo amin'ireo teny nalaina ny fomba ary mahita ilay misy ny ID nomena. Raha tsy misy na inona na inona hita, dia aseho ny hafatra "Tsy hita ny Quote, 404".

Tsarovy fa ny fomba dia mamerina sata HTTP 200 raha nahomby ny fangatahana ary 404 raha tsy hita ny fidirana.

Andeha isika hamorona fomba POST hanampiana teny vaovao amin'ny tahiry

Hahazo ny id isaky ny teny vaovao ianao rehefa manoratra. Ho fanampin'izany, ny POST dia hampiasa reqparse handinihana ireo mari-pamantarana izay hiditra ao amin'ny vatana fangatahana (mpanoratra sy quote text).

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

Ao amin'ny kaody etsy ambony, ny fomba POST dia nanaiky ID teny. Avy eo, tamin'ny fampiasana reqparse, dia naka ny mpanoratra sy naka teny avy amin'ny fangatahana, mitahiry azy ireo ao amin'ny rakibolana params.

Raha efa misy ny teny nalaina miaraka amin'ny ID voatondro, dia asehon'ilay fomba ny hafatra sy ny kaody 400.

Raha tsy mbola noforonina ny teny nalaina miaraka amin'ny ID voatondro, ny fomba dia mamorona fidirana vaovao miaraka amin'ny ID voatondro sy ny mpanoratra, ary koa ny masontsivana hafa. Avy eo dia manampy fidirana amin'ny lisitry ny ai_quotes ary mamerina ny fidirana miaraka amin'ny teny vaovao miaraka amin'ny code 201.

Ankehitriny dia mamorona fomba PUT hanovana teny iray efa misy ao amin'ny tahiry

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

Ny fomba PUT, mitovy amin'ny ohatra teo aloha, dia maka ID sy fampidirana ary manara-maso ny mari-pamantarana amin'ny fampiasana reqparse.

Raha misy teny nalaina miaraka amin'ny ID voatondro, ny fomba dia hanavao izany miaraka amin'ireo masontsivana vaovao ary avy eo dia mamoaka ny teny nohavaozina miaraka amin'ny kaody 200. Raha tsy mbola misy teny nalaina miaraka amin'ny ID voatondro dia hisy rakitsoratra vaovao misy kaody 201 hatsangana.

Farany, andao hamorona fomba DELETE hanesorana teny tsy misy aingam-panahy intsony.

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

Ity fomba ity dia maka ny ID quote ho fampidirana ary manavao ny lisitry ny ai_quotes amin'ny alΓ lan'ny lisitra nozaraina.

Ankehitriny rehefa namorona ny fomba rehetra isika, ny hany tokony hataontsika dia ny manampy fotsiny ny loharanon-karena amin'ny API, mametraka ny lalana ary mihazakazaka Flask.

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

Ny serivisy REST API dia vonona!

Avy eo, afaka mamonjy ny kaody amin'ny rakitra app.py isika amin'ny alΓ lan'ny fandefasana azy ao amin'ny console miaraka amin'ny baiko:

python3 app.py

Raha tsara ny zava-drehetra, dia hahazo zavatra toy izao isika:

* Fomba debug: mandeha
* Mitohy 127.0.0.1:5000/ (Tsindrio CTRL+C raha hiala)
* Manomboka amin'ny stat
* Mavitrika ny debugger!
* PIN Debugger: XXXXXXX

Fitsapana ny API

Aorian'ny famoronana ny API dia mila andrana izy io.

Azo atao izany amin'ny alΓ lan'ny fampitaovana fampiononana curl na ny mpanjifa Insomnia REST, na amin'ny famoahana ny API amin'ny Rapid API.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Famoahana ny API-nay

RapidAPI no tsena lehibe indrindra eran'izao tontolo izao misy API 10 mahery (ary mpamorona 000 tapitrisa eo ho eo).

RapidAPI dia tsy manome interface tokana ho an'ny fiaraha-miasa amin'ny API an'ny antoko fahatelo fotsiny, fa ahafahanao mamoaka haingana sy mora ny API anao manokana.

To ataovy izany, mila mamoaka azy amin'ny mpizara sasany amin'ny tambajotra aloha ianao. Amin'ny toe-javatra misy antsika dia hampiasaintsika Heroku. Ny fiaraha-miasa aminy dia tsy tokony hiteraka fahasahiranana, (afaka mahafantatra bebe kokoa momba izany ianao eto).

Ahoana ny famoahana ny API anao amin'ny Heroku

1. Apetraho Heroku.

Ny dingana voalohany dia ny fisoratana anarana sy ny fametrahana ny Heroku Command Line Interface (CLI). Ity dia miasa amin'ny Ubuntu 16+.

sudo snap install heroku --classic

Dia miditra izahay:

logiciel heroku

2. Ampio ny rakitra ilaina.

Ankehitriny dia mila manampy ireo rakitra havoaka amin'ny lahatahiry iray ao amin'ny fampiharanay izahay:

  • requirements.txt miaraka amin'ny lisitry ny maody Python ilaina;
  • Procfile, izay mamaritra izay baiko tsy maintsy tanterahina mba hampandehanana ny fampiharana;
  • .gitignore - hanilika ny rakitra tsy ilaina amin'ny mpizara.

Ny rakitra requirements.txt dia ahitana ireto andalana manaraka ireto:

  • tavoara
  • tavoara mandry feizay
  • gunicorn

Mariho fa nampiana gunicorn (Python WSGI HTTP Server) amin'ny lisitra izahay satria mila mihazakazaka ny fampiharana amin'ny mpizara.

Ny procfile dia ahitana:

tranonkala: gunicorn app:app

Ny votoatin'ny .giignore:

*.pyc
__pycache__/

Ankehitriny rehefa noforonina ireo rakitra, andao hanomboka ny git repo ary manolo-tena:

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

3. Mamorona fampiharana Heroku vaovao.

heroku create

Manosika ny sampana master mankany amin'ny repo Heroku lavitra:

git push heroku master

Afaka manomboka amin'ny fanokafana ny serivisy API ianao izao miaraka amin'ny baiko:

heroku ps:scale web=1
heroku open
 

Ny API dia ho hita ao amin'ny your-random-heroku-name.herokuapp.com/ai-quotes.

Ahoana ny fomba hanampiana ny Python API anao amin'ny tsena RapidAPI

Rehefa navoaka tao amin'ny Heroku ny serivisy API dia azonao ampidirina amin'ny Rapid API izany. Eto antontan-taratasy amin'ny antsipiriany momba an'io lohahevitra io.

1. Mamorona kaonty RapidAPI.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Manoratra kaonty maimaim-poana izahay - azo atao amin'ny Facebook, Google, GitHub izany.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

2. Ampio API amin'ny tontonana fanaraha-maso.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

3. Manaraka, ampidiro fampahafantarana ankapobeny momba ny API-nao.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

4. Rehefa avy manindry ny β€œAdd API” dia misy pejy vaovao miseho izay ahafahanao mampiditra vaovao momba ny API.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

5. Ankehitriny ianao dia afaka miditra amin'ny tanana ny API endpoints, na misintona fichier swagger mampiasa OpenAPI.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Eny, mila mametraka ny teboka faran'ny API amin'ny pejy Endpoints ianao. Amin'ny tranga misy antsika, ny teboka farany dia mifanaraka amin'ny foto-kevitry ny CRUD (mahazo, mandefa, mametraka, mamafa).

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Manaraka, mila mamorona teboka farany GET AI Quote ianao izay mampiseho teny kisendrasendra (raha ny ID no default) na teny iray ho an'ny ID voatondro.

Mba hamoronana teboka farany dia mila manindry ny bokotra "Create Endpoint" ianao.

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

Averinay ity dingana ity ho an'ny teboka API hafa rehetra. Izay ihany! Arahabaina, namoaka ny API-nao ianao!

Raha mandeha tsara ny zava-drehetra dia ho toy izao ny pejy API:

Manoratra API amin'ny Python (miaraka amin'ny Flask sy RapidAPI)

famaranana

Ato amin'ity lahatsoratra ity, dia nandeha tamin'ny dingan'ny famoronana ny RESTful API Service amin'ny Python izahay, miaraka amin'ny dingan'ny famoahana ny API amin'ny rahona Heroku ary ampidirina ao amin'ny lahatahiry RapidAPI.

Saingy ao amin'ny dikan-tsarimihetsika dia ny fitsipika fototra amin'ny fampandrosoana API ihany no naseho - ny nuances toy ny fiarovana, ny fandeferana ny fahadisoana ary ny scalability dia tsy nodinihina.

Rehefa mamorona API tena izy dia tsy maintsy raisina avokoa izany rehetra izany.

Source: www.habr.com

Add a comment