ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

ይህን ጽሑፍ እያነበብክ ከሆነ ኤፒአይ (የመተግበሪያ ፕሮግራሚንግ በይነገጽ) ሲጠቀሙ የሚከፈቱትን አጋጣሚዎች ያውቁ ይሆናል።

ከበርካታ ይፋዊ ኤፒአይዎች ውስጥ አንዱን ወደ መተግበሪያዎ በማከል፣ የዚህን መተግበሪያ ተግባር ማራዘም ወይም አስፈላጊውን ውሂብ ማሟላት ይችላሉ። ግን ለማህበረሰቡ ማጋራት የሚፈልጉትን ልዩ ባህሪ ካዳበሩስ?

መልሱ ቀላል ነው: ያስፈልግዎታል የራስዎን ኤፒአይ ይፍጠሩ.

ይህ መጀመሪያ ላይ ከባድ ሥራ ቢመስልም፣ በእርግጥ በጣም ቀላል ነው። ይህንን በፓይዘን እንዴት እንደሚያደርጉት እናሳይዎታለን።

ለመጀመር የሚያስፈልግህ ነገር

የኤፒአይ ልማት ያስፈልገዋል፡-

  • Python3;
  • ፋክስ የድር መተግበሪያዎችን ለመፍጠር ቀላል እና ለአጠቃቀም ቀላል የሆነ ማዕቀፍ;
  • ብልጭታ-RESTful REST ኤፒአይን በፍጥነት እና በትንሹ ውቅር እንዲያዳብሩ የሚያስችል የፍላስክ ቅጥያ ነው።

መጫኑ የሚከናወነው በትእዛዙ ነው-

pip install flask-restful

ለጀማሪዎች ነፃ የተጠናከረ ፕሮግራም እንመክራለን-
የቴሌግራም ቦት ልማት በ C# - ነሐሴ 26-28 አጋዥ ቦቶች እንዴት እንደሚሠሩ፣ ከቴሌግራም ኤፒአይ ጋር አብሮ የመሥራት ባህሪያትን እና ሌሎች ልዩነቶችን እንዲረዱ የሚያስችልዎ ነፃ የተጠናከረ። ከፍተኛ ሶስት ተሳታፊዎች ከ Skillbox 30 ሩብልስ ይቀበላሉ.

ከመጀመርዎ በፊት

ከመሠረታዊ ጋር RESTful API ልንገነባ ነው። የ CRUID ተግባር.

ተግባሩን ሙሉ በሙሉ ለመረዳት፣ ከላይ የተጠቀሱትን ሁለት ቃላት እንረዳ።

REST ምንድን ነው?

REST ኤፒአይ (የውክልና ግዛት ማስተላለፍ) ውሂብ ለመለዋወጥ HTTP ጥያቄዎችን የሚጠቀም ኤፒአይ ነው።

REST APIs የተወሰኑ መስፈርቶችን ማሟላት አለባቸው፡-

  • የደንበኛ አገልጋይ አርክቴክቸር፡ ደንበኛው ከተጠቃሚ በይነገጽ ጋር ይገናኛል፣ እና አገልጋዩ ከጀርባ እና የውሂብ ማከማቻ ጋር ይገናኛል። ደንበኛው እና አገልጋዩ ገለልተኛ ናቸው, አንዳቸው ከሌላው ተለይተው ሊተኩ ይችላሉ.
  • አገር አልባ - ምንም የደንበኛ ውሂብ በአገልጋዩ ላይ አይከማችም። የክፍለ ጊዜው ሁኔታ በደንበኛው በኩል ተከማችቷል.
  • መሸጎጫ - ደንበኞች አጠቃላይ አፈጻጸምን ለማሻሻል የአገልጋይ ምላሾችን መሸጎጥ ይችላሉ።

CRUD ምንድን ነው?

ክሩድ አራት መሰረታዊ ድርጊቶችን (መፍጠር፣ ማንበብ፣ ማዘመን እና መሰረዝ) የሚገልጽ የፕሮግራም አወጣጥ ጽንሰ-ሀሳብ ነው።

በ REST ኤፒአይ ውስጥ የጥያቄ ዓይነቶች እና የጥያቄ ዘዴዎች እንደ ልጥፍ፣ ማግኘት፣ ማስቀመጥ፣ መሰረዝ ላሉ ድርጊቶች ተጠያቂ ናቸው።

አሁን ከመሰረታዊ ቃላቶች ጋር ተገናኝተናል፣ ኤፒአይ መፍጠር ልንጀምር እንችላለን።

ልማት

ስለ አርቴፊሻል ኢንተለጀንስ የጥቅሶች ማከማቻ እንፍጠር። AI ዛሬ በፍጥነት እያደጉ ካሉ ቴክኖሎጂዎች አንዱ ነው፣ እና Python ከ AI ጋር ለመስራት ታዋቂ መሳሪያ ነው።

በዚህ ኤፒአይ የፓይዘን ገንቢ ስለ AI በፍጥነት ማወቅ እና በአዳዲስ ስኬቶች መነሳሳት ይችላል። ገንቢው በዚህ ርዕስ ላይ ጠቃሚ ሀሳቦች ካሉት ወደ ማከማቻው ማከል ይችላል።

የሚያስፈልጉትን ሞጁሎች በማስመጣት እና ፍላሽ በማዘጋጀት እንጀምር፡-

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

በዚህ ቅንጫቢ፣ ፍላስክ፣ ኤፒአይ እና ሪሶርስ የምንፈልጋቸው ክፍሎች ናቸው።

Reqparse Flask-RESTful ጥያቄን የሚተነተን በይነገጽ ነው... የዘፈቀደ ጥቅስ ለማሳየት የዘፈቀደ ሞጁሉንም ያስፈልግዎታል።

አሁን ስለ AI የጥቅሶች ማከማቻ እንፈጥራለን።

እያንዳንዱ ሪፖ ግቤት የሚከተሉትን ይይዛል-

  • ዲጂታል መታወቂያ;
  • የጥቅሱ ደራሲ ስም;
  • ጥቅስ

ይህ የመማሪያ ምሳሌ ብቻ ስለሆነ ሁሉንም ግቤቶች በፓይዘን ዝርዝር ውስጥ እናከማቻቸዋለን። በተጨባጭ አፕሊኬሽን ውስጥ፣ በምትኩ የውሂብ ጎታ እንጠቀማለን።

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

አሁን የኤ.ፒ.አይ. የመጨረሻ ነጥቦቻችንን አሠራር የሚገልጽ የጥቅስ ምንጭ ክፍል መፍጠር አለብን። በክፍል ውስጥ አራት ዘዴዎች መታወጅ አለባቸው: ያግኙ ፣ ይለጥፉ ፣ ያስቀምጡ ፣ ይሰርዙ።

በGET ዘዴ እንጀምር

መታወቂያውን በመግለጽ የተወሰነ ጥቅስ ወይም መታወቂያ ካልተገለጸ የዘፈቀደ ጥቅስ እንዲያገኙ ያስችልዎታል።

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 ዘዴ የዘፈቀደ ዋጋ ይመልሳል፣ ማለትም። ዘዴውን ሲደውሉ መታወቂያ አልተዘጋጀም።

ከተዋቀረ, ዘዴው በጥቅሶች መካከል ፈልጎ እና የተሰጠውን መታወቂያ የያዘውን ያገኛል. ምንም ነገር ካልተገኘ "ጥቅስ አልተገኘም, 404" የሚለው መልእክት ይታያል.

ያስታውሱ፣ ዘዴው ጥያቄው የተሳካ ከሆነ 200 የኤችቲቲፒ ሁኔታን ይመልሳል እና 404 ግቤት ካልተገኘ።

አሁን ወደ ማከማቻው አዲስ ጥቅስ ለመጨመር የPOST ዘዴን እንፍጠር

ሲተይቡ የእያንዳንዱን አዲስ ጥቅስ መታወቂያ ያገኛል። በተጨማሪም፣ POST በጠያቂው አካል ውስጥ የሚገቡትን መለኪያዎች (የደራሲ እና የጥቅስ ጽሑፍ) ለመተንተን reqparse ይጠቀማል።

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

ከላይ ባለው ኮድ የPOST ዘዴ የዋጋ መታወቂያን ተቀብሏል። ከዚያም reqparseን በመጠቀም ደራሲውን ሰርስሮ ከጥያቄው ጠቅሶ በፓራም መዝገበ ቃላት ውስጥ አከማችቷቸዋል።

ከተጠቀሰው መታወቂያ ጋር አንድ ጥቅስ ቀድሞውኑ ካለ ፣ ከዚያ ዘዴው ተገቢውን መልእክት እና ኮድ 400 ያሳያል።

ከተጠቀሰው መታወቂያ ጋር ጥቅስ ገና ካልተፈጠረ, ዘዴው ከተጠቀሰው መታወቂያ እና ደራሲ እንዲሁም ሌሎች መለኪያዎች ጋር አዲስ ግቤት ይፈጥራል. ከዚያም ወደ ai_quotes ዝርዝር ያስገባል እና አዲስ ጥቅስ ከ201 ኮድ ጋር ይመልሳል።

አሁን በማከማቻው ውስጥ ያለውን ጥቅስ ለመቀየር የ PUT ዘዴን እንፈጥራለን

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 ዘዴ፣ ካለፈው ምሳሌ ጋር ተመሳሳይ፣ መታወቂያ እና ግብአት ወስዶ reqparse በመጠቀም የዋጋ መለኪያዎችን ይተነትናል።

የተጠቀሰው መታወቂያ ያለው ጥቅስ ካለ፣ ዘዴው በአዲስ መለኪያዎች ያዘምነዋል ከዚያም የተሻሻለውን ጥቅስ በ ኮድ 200 ያወጣል። በተጠቀሰው መታወቂያ እስካሁን ምንም ጥቅስ ከሌለ ኮድ 201 ያለው አዲስ መዝገብ ይፈጠራል።

በመጨረሻም፣ ከአሁን በኋላ አበረታች ያልሆነን ጥቅስ ለማስወገድ የሰርዝ ዘዴ እንፍጠር።

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

ይህ ዘዴ የዋጋ መታወቂያውን እንደ ግብአት ይወስዳል እና የተጋራውን ዝርዝር በመጠቀም የ ai_quotes ዝርዝርን ያሻሽላል።

አሁን ሁሉንም ዘዴዎች ከፈጠርን በኋላ፣ ማድረግ ያለብን በቀላሉ ሀብቱን ወደ ኤፒአይ ማከል፣ መንገዱን ማስተካከል እና ፍላስክን ማስኬድ ብቻ ነው።

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

የእኛ REST API አገልግሎት ዝግጁ ነው!

በመቀጠል ኮዱን ወደ app.py ፋይል በኮንሶል ውስጥ በትእዛዝ በማስኬድ ማስቀመጥ እንችላለን፡-

python3 app.py

ሁሉም ነገር ደህና ከሆነ ፣ እንደዚህ ያለ ነገር እናገኛለን

* የማረም ሁነታ: በርቷል
* በመሮጥ ላይ 127.0.0.1: 5000/ (ለመተው CTRL+C ን ይጫኑ)
* በስታቲስቲክስ እንደገና በመጀመር ላይ
* አራሚ ንቁ ነው!
* የአራሚ ፒን፦ XXXXXXX

ኤፒአይን በመሞከር ላይ

ኤፒአይ ከተፈጠረ በኋላ መሞከር አለበት።

ይህ የ curl console utility ወይም Insomnia REST ደንበኛን በመጠቀም ወይም ኤፒአይ በራፒድ ኤፒአይ ላይ በማተም ሊከናወን ይችላል።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

የእኛን ኤፒአይ በማተም ላይ

RapidAPI ከ10 በላይ ኤፒአይዎች (እና ወደ 000 ሚሊዮን ገንቢዎች) ያለው ትልቁ የገበያ ቦታ ነው።

RapidAPI ከሶስተኛ ወገን ኤፒአይዎች ጋር አብሮ ለመስራት ነጠላ በይነገጽን ብቻ ሳይሆን የራስዎን ኤፒአይ በፍጥነት እና በቀላሉ እንዲያትሙ ያስችልዎታል።

አድርገው, በመጀመሪያ በአውታረ መረቡ ላይ ወደ አንዳንድ አገልጋይ ማተም ያስፈልግዎታል. በእኛ ሁኔታ, እንጠቀማለን ሄሮኩ. ከእሱ ጋር መስራት ምንም አይነት ችግር መፍጠር የለበትም (ስለሱ የበለጠ ማወቅ ይችላሉ እዚህ).

የእርስዎን ኤፒአይ በHeroku ላይ እንዴት ማተም እንደሚቻል

1. Heroku ን ይጫኑ.

የመጀመሪያው እርምጃ የ Heroku Command Line Interface (CLI) መመዝገብ እና መጫን ነው. ይሄ በኡቡንቱ 16+ ላይ ይሰራል።

sudo snap ጫን heroku --classic

ከዚያ እንገባለን፡-

heroku መግቢያ

2. አስፈላጊዎቹን ፋይሎች አክል.

አሁን በእኛ መተግበሪያ ውስጥ ወደ አቃፊ ለማተም ፋይሎቹን ማከል አለብን።

  • መስፈርቶች.txt ከሚያስፈልጉ የፓይዘን ሞጁሎች ዝርዝር ጋር;
  • አፕሊኬሽኑን ለማሄድ የትኞቹ ትዕዛዞች መፈፀም እንዳለባቸው የሚገልጽ ፕሮክፋይል;
  • .gitignore - በአገልጋዩ ላይ የማይፈለጉ ፋይሎችን ለማስቀረት.

የ መስፈርቶች.txt ፋይል የሚከተሉትን መስመሮች ይይዛል።

  • እቃ
  • ብልቃጥ-እረፍት
  • ጉኒኮርን

እባክዎን ጉኒኮርን (Python WSGI HTTP Server) ወደ ዝርዝሩ እንደጨመርን ልብ ይበሉ ምክንያቱም መተግበሪያችንን በአገልጋዩ ላይ ማስኬድ አለብን።

ፕሮፋይሉ የሚከተሉትን ይይዛል፡-

ድር: gunicorn መተግበሪያ: መተግበሪያ

የ.gitignore ይዘት፡

*.pyc
__pycache__/

አሁን ፋይሎቹ ሲፈጠሩ git repoን እናስጀምር እና እንግባ፡-

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

3. አዲስ የ Heroku መተግበሪያ ይፍጠሩ.

heroku create

ዋናውን ቅርንጫፍ ወደ የርቀት ሄሮኩ ሪፖ በመግፋት፡-

git push heroku master

አሁን የኤፒአይ አገልግሎትን በትእዛዞች በመክፈት መጀመር ይችላሉ፡-

heroku ps:scale web=1
heroku open
 

ኤፒአይው በ ላይ ይገኛል። your-random-heroku-name.herokuapp.com/ai-quotes.

የእርስዎን Python API ወደ RapidAPI የገበያ ቦታ እንዴት ማከል እንደሚቻል

አንዴ የኤፒአይ አገልግሎት በHeroku ላይ ከታተመ፣ ወደ Rapid API ማከል ይችላሉ። እዚህ ዝርዝር ሰነዶች በዚህ ርዕስ ላይ።

1. RapidAPI መለያ ይፍጠሩ።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

ነፃ መለያ እንመዘግባለን - ይህ በ Facebook ፣ Google ፣ GitHub በመጠቀም ሊከናወን ይችላል።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

2. ወደ የቁጥጥር ፓነል ኤፒአይ አክል.

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

3. በመቀጠል ስለ የእርስዎ API አጠቃላይ መረጃ ያስገቡ።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

4. "Add API" ን ጠቅ ካደረጉ በኋላ ስለእኛ ኤፒአይ መረጃ የሚያስገቡበት አዲስ ገጽ ይመጣል።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

5. አሁን የኤፒአይ የመጨረሻ ነጥቦችን እራስዎ ማስገባት ወይም ማውረድ ይችላሉ። swagger ፋይል OpenAPIን በመጠቀም።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

ደህና፣ አሁን የእኛን የኤፒአይ የመጨረሻ ነጥቦች በመጨረሻ ነጥቦች ገጽ ላይ ማዘጋጀት ያስፈልግዎታል። በእኛ ሁኔታ, የመጨረሻ ነጥቦቹ ከ CRUD ጽንሰ-ሐሳብ (ማግኘት, መለጠፍ, ማስቀመጥ, መሰረዝ) ጋር ይዛመዳሉ.

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

በመቀጠል፣ የዘፈቀደ ጥቅስ (መታወቂያው ነባሪ ከሆነ) ወይም ለተጠቀሰው መታወቂያ ጥቅስ የሚያሳይ የGET AI Quote መጨረሻ ነጥብ መፍጠር ያስፈልግዎታል።

የመጨረሻ ነጥብ ለመፍጠር "የመጨረሻ ነጥብ ፍጠር" የሚለውን ቁልፍ ጠቅ ማድረግ ያስፈልግዎታል.

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

ይህን ሂደት ለሁሉም የኤፒአይ የመጨረሻ ነጥቦች እንደግመዋለን። ይኼው ነው! እንኳን ደስ አለህ፣ የእርስዎን API አትመዋል!

ሁሉም ነገር ጥሩ ከሆነ፣ የኤፒአይ ገጹ ይህን ይመስላል።

ኤፒአይን በፓይዘን መጻፍ (በፍላስክ እና በራፒዲኤፒአይ)

መደምደሚያ

በዚህ ጽሑፍ ውስጥ ኤፒአይን ወደ Heroku ደመና ከማተም እና ወደ RapidAPI ማውጫ ውስጥ ከማከል ሂደት ጋር በ Python ውስጥ የራሳችንን RESTful API አገልግሎት የመፍጠር ሂደትን አልፈናል።

ነገር ግን በሙከራው ስሪት ውስጥ የኤፒአይ ልማት መሰረታዊ መርሆች ብቻ ታይተዋል - እንደ ደህንነት ፣ ስህተት መቻቻል እና መሻሻል ያሉ ልዩነቶች ግምት ውስጥ አልገቡም።

እውነተኛ ኤፒአይ ሲፈጠር, ይህ ሁሉ ግምት ውስጥ መግባት አለበት.

ምንጭ: hab.com

አስተያየት ያክሉ