Scribens API in Pythone (cum Flask et RapidAPI)

Scribens API in Pythone (cum Flask et RapidAPI)

Si hunc articulum legis, probabiliter iam nota es cum possibilitatibus quae venient cum API utendo (Application Programming Interface).

Addendo unum ex multis APIs apertis ad applicationem tuum, functionem applicationis extendere potes vel cum notitia necessaria ditare. Sed quid si peculiarem notam elaborasti quam cum communitate communicare vis?

Responsio simplex est: debes API creata sua.

Etsi hoc primo negotium arduum videri potest, est actu simplex. Ostendemus tibi quomodo hoc Pythone utens facias.

Quod vos postulo ut incipiat

Ut develop API opus est:

  • Python 3;
  • tenensque lenticulam - simplex et facilis ad utendum compage ad applicationes interretiales conficiendas;
  • LIGULA-RESTful extensio est pro Flask quae permittit tibi ut requiem API cito et minimam configurationem evolvere sinat.

instruitur cum imperio;

pip install flask-restful

Liberum intensive progressionis cursum pro incipientibus commendamus:
Telegram bot progressionem in C# - August 26-28. Cursus gratuitus intensivus qui permittit ut intelligas quomodo adiutores autocineti laborant, specialia operandi cum telegraphis API et aliis nuances. Tres optimi participantes accipient 30 rubles ex Skillbox.

Ante incipere

Sumus ut develop API cum basic LAEVUS CRUD functionality.

Ut munere perfecto intellegam, duo nominavi intellegam.

Quid est REQUIES?

CETERA API (Repraesentativa Translatio) est API qui petitionibus HTTP utitur ad commutationem data.

CETERA APIs est quaedam criteria:

  • Client-server architectura: Cliens mutuatur cum usore interface, et servo mutuatur cum backend notitia et repositione. Cliens et cultor sui iuris sunt, quodvis eorum separatim ab altero restitui potest.
  • Stat sine - nulla clientis notitia reposita in calculonis servi. Sessio publica in cliente latere reposita est.
  • Cacheability - Clientes responsiones servo cache possunt ad altiore observantia emendare.

Crudus quid est?

crud notio programmandi est quae quattuor actiones praecipuas describit (creare, legere, renovare et delere).

In REST API, rationes petendi et modi petendi responsales sunt actionibus ut post, impetra, pone, dele.

Nunc praecipuas condiciones intelligimus, API creare possumus.

consilio

Faciamus repositio sententiarum circa intelligentiam artificialem. AI unum e technologiae hodie crescentis velocissimae est, et Python instrumentum populare cum AI operandi est.

Hoc API, elit Python de AI celeriter informationes accipere et novis progressibus inspirari potest. Si de hac re elit cogitationes pretiosas habet, eas reposito addere poterit.

Modulorum necessariorum inferentes initium et erectionem Flask situs:

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

In hoc PRAECISIO, Flask, Api et Resource sunt classes nobis necessariae.

Reqparse est interrogationis amphorae parsing... Temere quoque moduli opus est ut temere quotem ostendas.

Nunc promptuariam actuum circa AI creabimus.

Singula repo viscus continebit:

  • digital ID;
  • nomen auctoris scntentia;
  • citare.

Cum haec disciplina sit exemplum, omnes introitus in Pythone indice ponemus. In applicatione reali, loco database uti volumus.

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

Nunc opus est creare genus resource Quote qui operationes nostrorum API terminos definiet. Intra genus quattuor modi debes declarare: posside, pone, pone, dele.

Sit scriptor satus modum cum GET

Efficere potest ut peculiarem numerum definias eius ID, vel temere auctoritatem si ID non specificata est.

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 methodum temere inducens si ID valorem default contineat, i.e. nulla id est certa cum vocant modum.

Si specificatur, methodus inter citationes perquirit et invenit eum qui ID definitum continet. Si nihil invenitur, nuntius "Quote non invenitur, 404" manifestatur.

Memento: modus redit HTTP status 200 si petitio bene fuit et 404 si recordum non inventum est.

Nunc faciamus TABULA methodum ut novum textum repositorium addas

Id inveniet cuiusque novae auctoritatis sicut tu typus. Praeterea, POST reqparse utetur ad parametris parse quae in corpore rogationis ibit (auctor et textum adducunt).

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

In codice superius, POST methodum prolatum ID accepit. Tum reqparse usus, auctorem et citationem ex interrogatione restituit, eas in dictionario params recondens.

Si auctoritas cum ID determinatis iam existit, modus nuntius congruenti et codici 400 prae se fert.

Si citatio cum ID determinatis nondum creata est, modus novum recordum cum ID et auctoris determinatis creat, necnon alios parametri. Postea addit ingressum ad ai_quotes indicem et ingressum reddit cum novo auctoritate una cum 201 codice.

Nunc modum pono modum exsistentis mutandi in eclesiae reposito

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 methodus, exemplo praecedente similis, ID accipit et inputet et quotum parametri reqparse utens parses.

Si citatio cum ID determinatis existat, methodus eam novis parametris renovabit ac deinde citationem renovatam cum codice 200 pones. Si citatio nulla cum ID definitis adhuc existit, nova recordum cum codice 201 creabitur.

Denique methodum delere faciamus prolationem removendam quae iam inspirando non est

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

Haec methodus locum ID cum initus accipit et ai_quotes in indice utens in indice communicato accipit.

Nunc omnes methodos creavimus, omnes ad faciendum opus est simpliciter API auxilium addere, viam pone, et Flask currere.

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

CETERA nostra API Service parata est!

Deinde, codicem ad tabulam app.py servare possumus, eam in console utendo mandato:

python3 app.py

Si omnia bona sunt, aliquid simile erimus;

* Debug modus: on
* Cursor on 127.0.0.1: 5000/ (Press CTRL+C decedere)
* Restarting cum stat
* Debugger est active!
* Debugger ACUS: XXXXXXX

Testis API

Postquam API creatur, probatione indiget.

Hoc fieri potest utens Crispum utilitatem consolandi vel Insomnia REQUIEM clientem, vel evulgando API in Celeri API.

Scribens API in Pythone (cum Flask et RapidAPI)

Nostrum API evulgare

RapidAPI mercatus amplissimus mundi cum plusquam 10 APIs (et circiter 000 decies centena millia tincidunt).

RapidAPI non solum unum momentum praebet operandi cum APIs tertia-parti, sed etiam facultatem dat tibi API cito ac facile ede tua.

Ad hoc facere, primum opus est ut eam aliquo servo in retis edas. In nobis utemur Heroku. Cum eo cooperante, nullas difficultates movere debet,potes reperire plura de eo hic).

Quam ad audiendum tuum API in Heroku

1. Instrue Heroku.

Primus gradus est scribere ac instituere Heroku Mandati Lineae Interface (CLI). Haec opera in Decuria 16+.

sudo disrumpam install heroku -classic

Tunc login:

heroku login

2. files necessariis adde.

Nunc opus est tabellas addere ut folder in applicatione nostra divulgentur:

  • requirements.txt cum indice modulorum Pythonis requiri;
  • Procfile, qui cificat, quid praecipiat, ut ad applicationem decurrat exsecutus est;
  • .gitignore - files excludere quae non sunt necessaria in calculonis servi.

Fasciculus requisita.txt lineas sequentes continebit:

  • tenensque lenticulam
  • vas-requiem
  • gunicorn

Quaeso nota nos ad indicem additae gunicornis (Python WSGI HTTP) quod opus est ut applicationem nostram in calculone curramus.

Procfile continebit:

web: gunicorn app: app

Contents of .gitignore;

*.pyc
__pycache__/

Nunc ut files creantur, initialize git repo et committamus;

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

3. Novam applicationem Heroku.

heroku create

Discutimus dominum ramum ad remotum Heroku repo:

git push heroku master

Nunc incipias aperiendo API Service utendo mandatis:

heroku ps:scale web=1
heroku open
 

API sit amet at your-random-heroku-name.herokuapp.com/ai-quotes.

Python API quomodo addere tuo ad RapidAPI mercatum?

Postquam munus tuum API in Heroku editum est, illud addere potes Celeri API. Hic detailed documentorum de hoc loco.

1. RapidAPI crea rationem.

Scribens API in Pythone (cum Flask et RapidAPI)

Rationem liberam subcriptio - id fieri potest utens Facebook, Google, GitHub.

Scribens API in Pythone (cum Flask et RapidAPI)

2. API addere ad imperium decuriae.

Scribens API in Pythone (cum Flask et RapidAPI)

3. Deinde generales informationes de tuis API intrant.

Scribens API in Pythone (cum Flask et RapidAPI)

4. Post clicking "API addere" nova pagina apparet ubi informationes de nostris API inire potes.

Scribens API in Pythone (cum Flask et RapidAPI)

5. Nunc vel manually API terminos vel download intrare potes swagger-file per OpenAPI.

Scribens API in Pythone (cum Flask et RapidAPI)

Age, iam necesse est API terminos ponere in terminis paginae nostrae. In casu nostro, fines notioni CRUD respondent (accipere, post, pone, delere).

Scribens API in Pythone (cum Flask et RapidAPI)

Deinde, debes creare GET AI Quote punctum quod temere textum exhibet (si ID defalta est) vel punctum pro ID definito.

Finem creare, deprime "Finem crea" puga pyga.

Scribens API in Pythone (cum Flask et RapidAPI)

Nos hunc processum pro omnibus aliis API terminis repetimus. Ita est! Gratulor, API tuum edidi!

Si bene omnia, API pagina aliquid simile hoc spectabit;

Scribens API in Pythone (cum Flask et RapidAPI)

conclusio,

In hoc articulo didicimus processum creandi tuum API Servitii in Pythone restantem, cum processu evulgandi API ad nubem Heroku et illum ad directorium RapidAPI addendo.

Sed probatio versionis ostendit solum principia API progressionis - nuances sicut securitas, culpa tolerantia et scalabilitas non sunt consideranda.

Cum API explicans realem, haec omnia ratio habenda est.

Source: www.habr.com