API a scríobh i Python (le Flask agus RapidAPI)

API a scríobh i Python (le Flask agus RapidAPI)

Má tá an t-alt seo á léamh agat, is dócha go bhfuil tú eolach cheana féin ar na féidearthachtaí a bhaineann le húsáid an API (Comhéadan Ríomhchláraithe Feidhmchláir).

Trí cheann amháin den iliomad API poiblí a chur le d’fheidhmchlár, is féidir leat feidhmiúlacht an fheidhmchláir seo a leathnú nó é a fhorlíonadh leis na sonraí riachtanacha. Ach cad a tharlóidh má tá gné uathúil forbartha agat ar mhaith leat a roinnt leis an bpobal?

Is é an freagra simplí: ní mór duit do API féin a chruthú.

Cé gur cosúil gur tasc scanrúil é seo ar dtús, tá sé simplí go leor i ndáiríre. Taispeánfaimid duit conas é seo a dhéanamh le Python.

Cad is gá duit a thosú

Éilíonn forbairt API:

  • Python3;
  • Fleascán — creat simplí agus éasca le húsáid chun feidhmchláir ghréasáin a chruthú;
  • Fleascán-RESTful Is síneadh é le haghaidh Flask a ligeann duit API REST a fhorbairt go tapa agus gan ach beagán socraithe a dhéanamh.

Déantar an tsuiteáil leis an ordú:

pip install flask-restful

Molaimid dianchlárú saor in aisce do thosaitheoirí:
Forbairt bot teileagram in C# — 26-28 Lúnasa. Dianchúrsa saor in aisce a ligeann duit tuiscint a fháil ar conas a oibríonn róbónna cabhrach, na gnéithe a bhaineann le bheith ag obair leis an Telegram API agus nuances eile. Gheobhaidh na trí rannpháirtí is fearr 30 rúbal ó Skillbox.

Sula dtosaíonn tú

Táimid chun API RESTful a fhorbairt le bunúsach feidhmiúlacht CRUID.

Chun an tasc a thuiscint go hiomlán, tuigimid an dá théarma atá luaite thuas.

Cad é REST?

Is API é REST API (Aistriú Stáit Ionadaíoch) a úsáideann iarratais HTTP chun sonraí a mhalartú.

Ní mór do REST APIs critéir áirithe a chomhlíonadh:

  • Ailtireacht cliant-freastalaí: idirghníomhaíonn an cliant leis an gcomhéadan úsáideora, agus idirghníomhaíonn an freastalaí leis an inneall agus an stór sonraí. Tá an cliant agus an freastalaí neamhspleách, is féidir aon cheann acu a athsholáthar ar leithligh ón taobh eile.
  • Gan stát - Ní stóráiltear aon sonraí cliant ar an bhfreastalaí. Stóráiltear staid an tseisiúin ar thaobh an chliaint.
  • Sochtacht - Is féidir le cliaint freagraí freastalaí a thaisceadh chun feidhmíocht fhoriomlán a fheabhsú.

Cad é CRUD?

RAW is coincheap ríomhchláraithe é a chuireann síos ar cheithre ghníomh bhunúsacha (cruthaigh, léigh, nuashonraigh agus scrios).

In REST API, tá cineálacha iarratas agus modhanna iarratais freagrach as gníomhartha cosúil le postáil, faigh, cuir, scrios.

Anois go bhfuil muid tar éis déileáil leis na téarmaí bunúsacha, is féidir linn tosú ar an API a chruthú.

Forbairt

Cruthaímid stór de Sleachta faoi hintleachta saorga. Tá AI ar cheann de na teicneolaíochtaí is mó fáis inniu, agus is uirlis mhóréilimh é Python chun oibriú le AI.

Leis an API seo, is féidir le forbróir Python foghlaim go tapa faoi AI agus a bheith spreagtha ag éachtaí nua. Má tá smaointe luachmhara ag an bhforbróir ar an ábhar seo, beidh sé in ann iad a chur leis an stór.

Cuirimis tús leis na modúil riachtanacha a iompórtáil agus Flask a shocrú:

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

Sa bhlúire seo, is iad Fleascán, Api agus Acmhainn na ranganna a theastaíonn uainn.

Is comhéadan parsála iarratais Fleascán-RESTful é Reqparse... Beidh an modúl randamach uait freisin chun luachan randamach a thaispeáint.

Anois cruthóimid stór de Sleachta faoi AI.

Beidh na nithe seo a leanas i ngach iontráil repo:

  • ID digiteach;
  • ainm údair an athfhriotail;
  • cuóta.

Ós rud é nach bhfuil anseo ach sampla foghlama, stórálfaimid gach iontráil i liosta Python. I bhfíor-fheidhmchlár, is dóichí go n-úsáidfimid bunachar sonraí ina ionad.

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

Anois ní mór dúinn aicme acmhainn Athfhriotail a chruthú a shaineoidh oibríochtaí ár gcríochphointí API. Ní mór ceithre mhodh a dhearbhú taobh istigh den rang: faigh, postáil, cuir, scrios.

Let tús leis an modh GET

Ligeann sé duit meastachán sonrach a fháil trína ID a shonrú, nó luachan randamach mura bhfuil aon aitheantas sonraithe.

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

Tugann an modh GET luachan randamach ar ais má tá an luach réamhshocraithe san aitheantas, i.e. nuair a ghlaoigh níor socraíodh ID an mhodha.

Má tá sé socraithe, ansin cuardaigh an modh i measc Sleachta agus aimsíonn an ceann a bhfuil an ID tugtha. Mura bhfaightear rud ar bith, taispeántar an teachtaireacht “Ní bhfuarthas ceanglófar, 404”.

Cuimhnigh, tugann an modh stádas HTTP de 200 ar ais má d'éirigh leis an iarratas agus 404 mura bhfuarthas an iontráil.

Anois cruthaimis modh POST chun luachan nua a chur leis an stór

Gheobhaidh sé aitheantas gach athfhriotail nua agus tú ag clóscríobh. Ina theannta sin, úsáidfidh POST reqparse chun na paraiméadair a rachaidh i gcorp an iarratais (údar agus téacs athfhriotail) a pharsáil.

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

Sa chód thuas, ghlac an modh POST le haitheantas athfhriotail. Ansin, ag baint úsáide as reqparse, d'aisghabh sé an t-údar agus an luachan ón iarratas, á stóráil i bhfoclóir na bparaimís.

Má tá ceanglófar leis an ID sonraithe ann cheana féin, taispeánann an modh an teachtaireacht chuí agus an cód 400.

Mura bhfuil ceanglófar leis an ID sonraithe cruthaithe fós, cruthaíonn an modh iontráil nua leis an ID sonraithe agus an t-údar, chomh maith le paraiméadair eile. Ansin cuireann sé iontráil leis an liosta ai_quotes agus cuireann sé ar ais iontráil le luachan nua mar aon le cód 201.

Anois cruthaímid modh PUT chun luachan reatha sa stór a athrú

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

Glacann an modh PUT, cosúil leis an sampla roimhe seo, ID agus ionchur agus parsálann sé na paraiméadair athfhriotail ag baint úsáide as reqparse.

Má tá ceanglófar leis an ID sonraithe ann, déanfaidh an modh é a nuashonrú leis na paraiméadair nua agus ansin aschuirfidh sé an ceanglófar nuashonraithe le cód 200. Mura bhfuil aon luachan leis an ID sonraithe fós, cruthófar taifead nua le cód 201.

Ar deireadh, cruthaimis modh DELETE chun ceanglófar nach bhfuil spreagtha a thuilleadh a bhaint.

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

Glacann an modh seo an t-aitheantas athfhriotail mar ionchur agus nuashonraítear an liosta ai_quotes ag baint úsáide as an liosta comhroinnte.

Anois go bhfuil na modhanna go léir cruthaithe againn, níl le déanamh againn ach an acmhainn a chur leis an API, an cosán a shocrú, agus Fleascán a rith.

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

Tá ár Seirbhís REST API réidh!

Ansin, is féidir linn an cód a shábháil chuig an gcomhad app.py trína rith sa chonsól leis an ordú:

python3 app.py

Má tá gach rud ceart go leor, gheobhaidh muid rud éigin mar seo:

* Mód dífhabhtaithe: ar siúl
* Rith ar aghaidh 127.0.0.1: 5000/ (Brúigh CTRL+C le scor)
* Ag atosú le stat
* Tá dífhabhtóir gníomhach!
* UAP Dífhabhtóra: XXXXXXX

An API á thástáil

Tar éis an API a chruthú, ní mór é a thástáil.

Is féidir é seo a dhéanamh ag baint úsáide as an bhfóntas consól curl nó an cliant Insomnia REST, nó tríd an API a fhoilsiú ar an API Mear.

API a scríobh i Python (le Flask agus RapidAPI)

Ár API a fhoilsiú

Is é RapidAPI an margadh is mó ar domhan le níos mó ná 10 API (agus thart ar 000 milliún forbróir).

Ní hamháin go soláthraíonn RapidAPI comhéadan amháin chun oibriú le APInna tríú páirtí, ach ligeann sé duit do API féin a fhoilsiú go tapa agus go héasca.

Chun seo a dhéanamh, ní mór duit ar dtús é a fhoilsiú ar fhreastalaí éigin ar an líonra. In ár gcás, úsáidfimid Heroku. Níor cheart go mbeadh aon deacrachtaí ag obair leis, (is féidir leat tuilleadh eolais a fháil faoi anseo).

Conas do API a fhoilsiú ar Heroku

1. Suiteáil Heroku.

Is é an chéad chéim ná Comhéadan Líne Ordú Heroku (CLI) a chlárú agus a shuiteáil. Oibríonn sé seo ar Ubuntu 16+.

sudo snap shuiteáil heroku --classic

Ansin déanaimid logáil isteach:

logáil isteach heroku

2. Cuir na comhaid is gá.

Anois caithfimid na comhaid le foilsiú a chur le fillteán inár bhfeidhmchlár:

  • requirements.txt le liosta de na modúil Python riachtanacha;
  • Próifíl, a shonraíonn na horduithe nach mór a fhorghníomhú chun an feidhmchlár a rith;
  • .gitnore - chun comhaid nach bhfuil ag teastáil ar an bhfreastalaí a eisiamh.

Beidh na línte seo a leanas sa chomhad requirements.txt:

  • fleascán
  • fleascach-restful
  • gunicorn

Tabhair faoi deara go bhfuil gunicorn (Freastalaí HTTP Python WSGI) curtha againn leis an liosta mar ní mór dúinn ár n-iarratas a rith ar an bhfreastalaí.

Beidh na nithe seo a leanas sa phróifíl:

gréasáin: gunicorn app: app

Ábhar .gitnore:

*.pyc
__pycache__/

Anois go bhfuil na comhaid cruthaithe, déanaimis an git repo a thúsú agus tiomantas a thabhairt:

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

3. Cruthaigh app Heroku nua.

heroku create

Ag brú an bhrainse chuig an repo iargúlta Heroku:

git push heroku master

Anois is féidir leat tosú tríd an tSeirbhís API a oscailt leis na horduithe:

heroku ps:scale web=1
heroku open
 

Beidh an API ar fáil ag your-random-heroku-name.herokuapp.com/ai-quotes.

Conas do API Python a chur le margadh RapidAPI

Nuair a bheidh an tseirbhís API foilsithe ar Heroku, is féidir leat é a chur leis an Rapid API. Anseo doiciméadú mionsonraithe ar an ábhar seo.

1. Cruthaigh cuntas RapidAPI.

API a scríobh i Python (le Flask agus RapidAPI)

Cláraimid cuntas saor in aisce - is féidir é seo a dhéanamh trí úsáid a bhaint as Facebook, Google, GitHub.

API a scríobh i Python (le Flask agus RapidAPI)

2. Cuir API leis an bpainéal rialaithe.

API a scríobh i Python (le Flask agus RapidAPI)

3. Ansin, cuir isteach faisnéis ghinearálta faoi do API.

API a scríobh i Python (le Flask agus RapidAPI)

4. Tar éis cliceáil "Add API" feictear leathanach nua inar féidir leat faisnéis a chur isteach faoinár API.

API a scríobh i Python (le Flask agus RapidAPI)

5. Anois is féidir leat ceachtar de láimh isteach na críochphointí API, nó a íoslódáil comhad swagger ag baint úsáide as OpenAPI.

API a scríobh i Python (le Flask agus RapidAPI)

Bhuel, anois ní mór duit críochphointí ár API a shocrú ar an leathanach Críochphointí. Inár gcás, comhfhreagraíonn na críochphointí do choincheap CRUD (faigh, postáil, cuir, scrios).

API a scríobh i Python (le Flask agus RapidAPI)

Ansin, ní mór duit críochphointe GET AI Quote a chruthú a thaispeánann athfhriotail randamach (má tá an ID réamhshocraithe) nó ceanglófar don ID sonraithe.

Chun críochphointe a chruthú, ní mór duit an cnaipe “Cruthaigh críochphointe” a chliceáil.

API a scríobh i Python (le Flask agus RapidAPI)

Déanaimid an próiseas seo arís le haghaidh gach críochphointe API eile. Sin é an méid! Comhghairdeas, tá do API foilsithe agat!

Má éiríonn go maith leis, beidh cuma mar seo ar an leathanach API:

API a scríobh i Python (le Flask agus RapidAPI)

Conclúid

San Airteagal seo, shiúil muid tríd an bpróiseas chun ár Seirbhís API RESTful féin a chruthú i Python, chomh maith leis an bpróiseas chun an API a fhoilsiú chuig scamall Heroku agus é a chur leis an eolaire RapidAPI.

Ach sa leagan tástála, níor léiríodh ach na bunphrionsabail maidir le forbairt API - níor tugadh aird ar nuances mar shlándáil, lamháltas locht agus scalability.

Agus fíor-API á fhorbairt, ní mór é seo go léir a chur san áireamh.

Foinse: will.com

Add a comment