áĄáááşá áááşáááş á¤ááąáŹááşá¸ááŤá¸ááᯠáááşáážáŻááąááŤáá API (Application Programming Interface) ááᯠáĄááŻáśá¸ááźáŻá ááŤáááşááŹááąáŹ ááźá
áşáááŻááşááźáąááťáŹá¸áážááˇáş áááşáááşá áááş áááşá¸áážáŽá¸ááźáŽá¸ááŹá¸ ááźá
áşááąáŹááşá¸ááźá
áşáááŻááşááŤáááşá
áááˇáşáĄáááŽááąá¸áážááşá¸áááŻáˇáá˝ááˇáşááŹá¸ááąáŹ API áĄááťáŹá¸áĄááźáŹá¸áá˛ááž áá
áşááŻááᯠááąáŤááşá¸áááˇáşááźááşá¸ááźááˇáşá áááşáááş áĄáááŽááąá¸áážááşá¸áááŻááşááąáŹááşáááŻááşá
á˝ááşá¸ááᯠáááŻá¸ááťá˛áˇáááŻááşáááş áááŻáˇáááŻááş áááşá¸ááᯠáááŻáĄááşááąáŹááąááŹááźááˇáş ááźááˇáşáááşá¸áááŻááşáááşá áááŻáˇááąáŹáş áááşáááş áĄáááŻááşá¸áĄáááŻááşá¸áážááˇáş ááťážááąáááŻáááˇáş áá°á¸ááźáŹá¸ááąáŹáĄááşášááŤáááşáá
áşááŻááᯠááŽáá˝ááşáá˛áˇááťážááşááąáŹá
áĄááźáąá áááŻá¸áážááşá¸ááŤáááş- áááşáááŻáĄááşááŤáááşá
ááŤá áĄá áááŻááşá¸áážáŹ áááşáá˛áá˛áˇáĄááŻááşáááŻáˇ áááşáááąáááˇáş ááááşáááşá¸ááąáŹáˇ áááŻá¸áážááşá¸ááŤáááşá Python ááᯠáĄááŻáśá¸ááźáŻá áááşá¸ááᯠáááşáááŻáˇááŻááşááąáŹááşááááşááᯠáááˇáşáĄáŹá¸ ááźáááŤáááşá
á áááşáááş áááşááŹáááŻáĄááşááááşá¸á
API áá áşááŻáááşááąáŹááşáááş áááşáááŻáĄááşáááş-
- Python3;
áá°á¸ - áááşáĄááşáááŽááąá¸áážááşá¸ááťáŹá¸áááşááŽá¸áááşáĄáá˝ááş áááŻá¸áážááşá¸ááźáŽá¸ áĄááŻáśá¸ááźáŻááá˝ááşáá°ááąáŹ framework áá áşááŻáááŻáááşá¸-áĄáĄáąá¸ááŹááş REST API ááᯠááťááşááźááşá á˝áŹáážááˇáş áĄáááşá¸áááşááťážáᏠáá˝á˛áˇá ááşá¸áážáŻááźááˇáş áááşááŽá¸áááŻááşá áąáááˇáş Flask áĄáá˝ááş extension áá áşááŻááźá áşáááşá
áááşáááşááźááşá¸ááᯠcommand ááźááˇáşááŻááşááąáŹááşáááş-
pip install flask-restful
á áááşáá°ááťáŹá¸áĄáá˝ááş áĄááá˛áˇ áĄáá°á¸ááááş ááááŻááááşá¸áááşá¸áááşáááşá¸ááᯠáĄááźáśááźáŻáááŻááŤáááşá
C# áá˝ááş Telegram bot áá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻ - ááźááŻááş áá-ááá assistant bots ááťáŹá¸ áááşáááŻáˇáĄááŻááşááŻááşááŻáśá Telegram API áážááˇáş ááŻááşááąáŹááşááźááşá¸áááŻááşáᏠáĄááąá¸á áááşáĄááťááşááťáŹá¸áážááˇáş áĄááźáŹá¸ááąáŹ áá˝á˛ááźáŹá¸ááťááşááťáŹá¸ááᯠááŹá¸áááşáááŻááşá áąáááˇáş áĄááá˛áˇ áĄáá°á¸ááźááşáááşáááşáááşá¸á áĄááąáŹááşá¸ááŻáśá¸ááŤáááşáá° ááŻáśá¸áŚá¸áááş Skillbox ááž áá°áááş 30 ááážááááşááźá áşáááşá.
áá áááşááŽ
ááťá˝ááşáŻááşáááŻáˇáááş áĄááźáąááśááźááˇáş RESTful API ááᯠááŽáá˝ááşááąáŹáˇáááşááźá
áşáááşá
ááŻááşáááşá¸ááŹáááşááᯠáĄááźááˇáşáĄáááŹá¸áááşáááş áĄáááşááąáŹáşááźá፠ááąáŤááŹááážá áşááŻááᯠááŹá¸áááşááźááŤá ááŻáˇá
REST áááŻááŹááŹáá˛á
REST API (Representational State Transfer) áááş ááąááŹááážááşáááş HTTP ááąáŹááşá¸áááŻááťááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááˇáş API áá áşááŻááźá áşáááşá
REST API ááťáŹá¸áááş áááşáážááşááŹá¸ááąáŹ áááşáážááşááťááşááťáŹá¸áážááˇáş ááźááˇáşááŽááááş-
- ááááŻááşá¸áááˇáş-ááŹááŹáááşááąáŹááşááŻáś- ááááŻááşá¸áááˇáşáááş áĄááŻáśá¸ááźáŻáá°áĄááşááŹááąáˇá áşáážááˇáş áĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşááźáŽá¸ ááŹááŹáááş ááąáŹááşááśáááŻááşáážááˇáş ááąááŹáááŻáážáąáŹááşáážáŻáážááˇáş áĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşáááşá client áážááˇáş server áááş ááŽá¸ááźáŹá¸ááźá áşááźáŽá¸ áááşá¸áááŻáˇááᯠáĄááźáŹá¸áá áşááŻááž ááŽá¸ááźáŹá¸áĄá áŹá¸áááŻá¸áááŻááşááŤáááşá
- áááŻááşááśáá˛áˇ - ááŹááŹááąáŤáşáá˝ááş ááŻáśá¸á á˝á˛áá°ááąááŹááᯠááááşá¸áááşá¸ááŹá¸ááźááşá¸ááážáááŤá á ááşáážááşáĄááźáąáĄááąáĄáŹá¸ ááŻáśá¸á á˝á˛áá°áááşááž ááááşá¸áááşá¸ááŹá¸áááşá
- Cacheability - ááąáŹááşáááşááťáŹá¸áááş áĄááŻáśá¸á áŻáśá á˝ááşá¸ááąáŹááşáááşáááŻá¸áááşá áąáááş ááŹááŹááŻáśáˇááźááşáážáŻááťáŹá¸ááᯠáááşáážáşááŻááşáááŻááşááŤáááşá
CRUD áááŻáᏠááŹáá˛
ááąááśááťáąáŹááşá¸ áĄááźáąááśááŻááşááąáŹááşááťááşááąá¸áᯠ(áááşááŽá¸áááşá áááşáááşá áá˝ááşá¸ááśáááşáážááˇáş ááťááşáááş) áááŻááąáŹáşááźáááˇáş ááááŻááááşá¸áááşá¸áĄáá°áĄááá áşááŻááźá áşáááşá
REST API áá˝ááşá ááąáŹááşá¸áááŻááťááşáĄááťááŻá¸áĄá áŹá¸ááťáŹá¸áážááˇáş ááąáŹááşá¸áááŻáážáŻáááşá¸áááşá¸ááťáŹá¸áááş áááŻáˇá áşá ááá°áááşá áááşááźááşá¸á ááťááşááźááşá¸áá˛áˇáááŻáˇááąáŹ ááŻááşááąáŹááşáážáŻááťáŹá¸áĄáá˝ááş ááŹáááşáážáááŤáááşá
áááŻáĄá፠áĄááźáąááśáĄááŻáśá¸áĄáážáŻááşá¸ááťáŹá¸ááᯠááŹá¸áááşááźáŽá¸ API ááᯠá áááşáááşááŽá¸áááŻááşááŤááźáŽá
ááŻáśá áś
Artificial Intelligence áĄááźáąáŹááşá¸ áááŻá¸ááŹá¸ááťááşááťáŹá¸á áááŻáážáąáŹááşáážáŻáá áşááŻááᯠáááşááŽá¸ááźááŤá ááŻáˇá AI áááş áááąáˇááąááşáá˝ááş áĄááťááşááźááşááŻáśá¸ ááźáŽá¸áá˝áŹá¸ááŹááąáŹ áááşá¸áááŹááťáŹá¸áá˛ááž áá áşááŻááźá áşááźáŽá¸ Python áááş AI áážááˇáş ááŻááşááąáŹááşáááşáĄáá˝ááş ááąáááşá¸á áŹá¸ááąáŹ ááááááŹáá áşááŻááźá áşáááşá
ᤠAPI ááźááˇáş Python developer áááş AI áážááˇáşáááşáááşááąáŹ áĄááťááşáĄáááşááťáŹá¸ááᯠááťááşááźááşá á˝áŹááááŻááşááźáŽá¸ áááŻá¸áááşáážáŻáĄáá áşááťáŹá¸ááźááˇáş áážáŻáśáˇááąáŹáşáážáŻááá°áááŻááşáááşá ááąáŹáˇááşáá˛ááąá¸ááŹá¸áá°áááş á¤áĄááźáąáŹááşá¸áĄááŹáážááˇáş áááşáááşá áĄáááŻá¸áááşááąáŹ áĄáá˝áąá¸áĄááźááşááťáŹá¸áážáááŤáá áááşá¸áááŻáˇááᯠáááŻáážáąáŹááşáááşá¸áá˝ááş áááˇáşáá˝ááşá¸áááŻááşáááşááźá áşáááşá
áááŻáĄááşááąáŹ module ááťáŹá¸áááŻáááşáá˝ááşá¸ááźáŽá¸ Flask áááŻá áááşááźááşá¸ááźááˇáşá áááşááźááŤá ááŻáˇá
from flask import Flask
from flask_restful import Api, Resource, reqparse
import random
app = Flask(__name__)
api = Api(app)
á¤áĄáááŻáĄáá˝áŹáá˝ááşá Flaská Api áážááˇáş Resource ááťáŹá¸áááş ááťá˝ááşáŻááşáááŻáˇáááŻáĄááşááąáŹ áĄáááşá¸ááťáŹá¸ááźá áşáááşá
Reqparse áááş Flask-RESTful query parsing interface áá áşááŻááźá áşáááşá
áááŻááťá˝ááşáŻááşáááŻáˇáááş AI áážááˇáşáááşáááşááąáŹáááŻá¸ááŹá¸ááťááşááťáŹá¸ááááŻáážáąáŹááşáážáŻáá áşááŻáááŻáááşááŽá¸ááŤáááşá
repo áááˇáşáá˝ááşá¸áážáŻáá áşááŻá áŽáá˝ááş-
- áá áşááťá áşáááş ID;
- quotation áááąá¸ááŹá¸áá°áĄáááş;
- áááŻá¸ááŹá¸á
áááşá¸áááş ááąáˇááťááˇáşááąá¸ááá°ááŹáá áşááŻááťážááŹááźá áşááąáŹááźáąáŹááˇáşá áááŻááşáĄáŹá¸ááŻáśá¸ááᯠPython á áŹáááşá¸áá áşááŻáá˝ááş ááááşá¸áááşá¸ááŤáááşá ááááˇáşáĄáááŽááąá¸áážááşá¸áá áşááŻáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáĄá áŹá¸ ááąááŹááąáˇá áşááᯠáĄááŻáśá¸ááźáŻáá˝ááşáážááááşá
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."
}
]
ááᯠááťá˝ááşáŻááşáááŻáˇáááş ááťá˝ááşáŻááşáááŻáˇá API áĄááŻáśá¸áážááşááťáŹá¸á ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáááşáážááşááąá¸áááˇáş Quote áĄáááşá¸áĄááźá áşáĄáááşá¸áĄá áŹá¸ááᯠáááşááŽá¸áááş áááŻáĄááşááŤáááşá áĄáááşá¸áĄáá˝ááşá¸áá˝ááş get á post á put á delete áááşá¸áááşá¸ ááąá¸ááŻááᯠáááşááźáąááźáŹáááşáááŻáĄááşáááşá
GET áááşá¸áááşá¸ááźááˇáş á áááŻááşááĄáąáŹááş
áááşá¸áááş áááşá¸á ID áááŻáááşáážááşááźááşá¸ááźááˇáş ááááťááąáŹáááŻá¸ááŹá¸ááťááşááᯠááá°áááş áááŻáˇáááŻááş ID áááŻáááşáážááşáááŹá¸ááŤá ááťáááşá¸áááŻá¸ááŹá¸ááťááşáá áşááŻááážáá áąáááşá
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
ID áá˝ááş ááŻáśááąáááşáááŻá¸ááŤáážáááťážááş GET áááşá¸áááşá¸áááş ááťáááşá¸áááŻá¸ááŹá¸ááťááşááᯠááźááşááąá¸áááşá áááşá¸áááşá¸áááŻááąáŤáşáááŻááąáŹáĄá፠ID ááááşáážááşááŹá¸ááŤá
áááşá¸ááᯠáááşáážááşááŹá¸ááŤáá áááşá¸áááşá¸áááş áááŻá¸ááŹá¸ááťááşááťáŹá¸ááźáŹá¸áá˝ááş áážáŹáá˝áąááźáŽá¸ áááşáážááşááŹá¸ááąáŹ ID ááŤáážáááąáŹ áá áşááŻááᯠáážáŹáá˝áąáˇáááşá ááá˝áąáˇááŤáá âáááŻá¸ááŹá¸ááá˝áąáˇá 404â áá°ááąáŹ áááşááąáˇááťáşááᯠááźááááşááźá áşáááşá
ááááááŤ- ááąáŹááşá¸áááŻááťááşáĄáąáŹááşááźááşááŤá 200 áážááˇáş áážááşáááşá¸áááŻááá˝áąáˇááŤá áááşá¸áááşá¸áááş HTTP áĄááźáąáĄááąááᯠááźááşááąá¸áááşá
ááᯠrepository áá˝ááşáááŻá¸ááŹá¸ááťááşáĄáá áşáááˇáşáááş POST áááşá¸áááşá¸áááŻáááşááŽá¸ááźááŤá ááŻáˇ
áááşáááŻááşáááˇáşáĄáááŻááşá¸ áááŻá¸ááŹá¸ááťááşáĄáá áşáá áşááŻá áŽá ID ááᯠááážáááŤáááşá áááŻáˇáĄááźááşá 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 áááşá¸áááşá¸áááş áááŻá¸ááŹá¸ááťááş ID ááᯠáááşááśáá˛áˇáááşá áááŻáˇááąáŹááş reqparse ááᯠáĄááŻáśá¸ááźáŻá áááşá¸áááş á áŹááąá¸áááŹáážááˇáş áááŻá¸ááŹá¸ááťááşáááŻáˇááᯠááŤááŹááşáĄááááŹááşáá˝ááş ááááşá¸áááşá¸ááŹá¸áááşá
áááşáážááşááŹá¸ááąáŹ ID ááŤáááˇáş áááŻá¸ááŹá¸ááťááşáá áşáᯠáážááážááˇáşááźáŽá¸ááźá áşááŤáá áááşá¸áááşá¸áááş áááşáááŻááşáᏠáááşááąáˇááťáşáážááˇáş ááŻááş 400 ááᯠááźááááşá
áááşáážááşááŹá¸ááąáŹ ID ááŤááąáŹ áááŻá¸ááŹá¸ááťááşáá áşááŻááᯠááááşááŽá¸áááąá¸ááŤáá áááşá¸áááşá¸áááş áááşáážááşááŹá¸ááąáŹ ID áážááˇáş ááąá¸ááŹá¸áá°áĄááźááş áĄááźáŹá¸ááąáŹ áááˇáşáááşááťááşááťáŹá¸ááźááˇáş áážááşáááşá¸áĄáá áşáá áşáᯠáááşááŽá¸ááąá¸ááŤáááşá áááŻáˇááąáŹááş áááşá¸áááş ai_quotes á áŹáááşá¸áááŻáˇ áááˇáşáá˝ááşá¸ááźáŽá¸ 201 ááŻááşáážááˇáşáĄáá° áááŻá¸ááŹá¸áĄáá áşááźááˇáş áááˇáşáá˝ááşá¸áážáŻááᯠááźááşááąá¸áááşá
áááŻááťá˝ááşáŻááşáááŻáˇáááş repository áá˝ááşáážáááźáŽá¸ááŹá¸áááŻá¸ááŹá¸ááťááşáááŻááźáąáŹááşá¸áá˛áááş 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 áááşá¸áááşá¸áááş ID áážááˇáş input áááŻáá°áᏠreqparse áááŻáĄááŻáśá¸ááźáŻá quote parameters ááťáŹá¸áááŻáá˝á˛ááźááşá¸á áááşááźáŹáááşá
áááşáážááşááŹá¸ááąáŹ ID ááŤáážááááˇáş áááŻá¸ááŹá¸ááťááşáá áşááŻáážáááťážááş áááşá¸áááşá¸áááş áááşá¸ááᯠáááˇáşáááşááťááşáĄáá áşááťáŹá¸ááźááˇáş áĄááşááááşááŻááşáááşááźá áşááźáŽá¸ áĄááşááááşááŻááşááŹá¸ááąáŹ áááŻá¸ááŹá¸ááťááşááᯠááŻááş 200 ááźááˇáş ááŻááşááŤáááşá áááşáážááşááŹá¸ááąáŹ ID áážááˇáş áááŻá¸ááŹá¸ááŹá¸ááźááşá¸ááážáááąá¸ááŤáá ááŻááş 201 á፠áážááşáááşá¸áĄáá áşááᯠáááşááŽá¸ááŤáááşá
ááąáŹááşááŻáśá¸áĄááąáá˛áˇá á áááşáĄáŹá¸áááşáááşáážáŻááážáááąáŹáˇáá˛áˇ áááŻá¸ááŹá¸ááťááşááᯠáááşáážáŹá¸áááŻáˇ DELETE áááşá¸áááşá¸ááᯠáááşááŽá¸ááźááŤá ááŻáˇ
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
á¤áááşá¸áááşá¸áááş áááŻá¸ááŹá¸ááťááş ID ááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ ááťážááąááŹá¸ááąáŹá áŹáááşá¸ááᯠáĄááŻáśá¸ááźáŻá ai_quotes á áŹáááşá¸ááᯠáĄááşááááşááŻááşáááşá
ááᯠááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááşááŽá¸ááŹá¸ááźáŽá¸á ááťá˝ááşáŻááşáááŻáˇááŻááşááąáŹááşáááşáážáŹ áĄáááşá¸áĄááźá áşáá áşáᯠAPI áááŻáˇ áááŻá¸áážááşá¸á á˝áŹáááˇáşááŤá áááşá¸ááźáąáŹááşá¸ááᯠáááşáážááşááźáŽá¸ Flask áááŻáá˝ááˇáşááŤá
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
áĄáŹá¸ááŻáśá¸ááąáŹááşá¸áááş ááŽáááŻááťááŻá¸ ááááŻááşáážáŹááŤ
* áĄáážáŹá¸áážáŹááŻááş- áá˝ááˇáşááŹá¸áááşá
* áááşáááşááąáááşá
* stat ááźááˇáşááźááşáááşá
áááşáááşá
* áĄáážáŹá¸áážáŹááźááşáá°áááş áĄáááşáááşááŤáááşá
* áĄáážáŹá¸áážáŹáá° áááşááśááŤááş- XXXXXXX
API ááᯠá ááşá¸áááşááźááşá¸á
API áááŻáááşááŽá¸ááźáŽá¸áááşáážááˇáşáááşá¸áááŻá ááşá¸áááşáááşáááŻáĄááşáááşá
áááşá¸ááᯠcurl console utility áááŻáˇáááŻááş Insomnia REST client áááŻáĄááŻáśá¸ááźáŻá áááŻáˇáááŻááş Rapid API áá˝ááş API áááŻááŻááşááąááźááşá¸ááźááˇáşááŻááşááąáŹááşáááŻááşáááşá
ááťá˝ááşáŻááşáááŻáˇá API áááŻááŻááşááąááźááşá¸á
RapidAPI áááş API 10 ááťáąáŹáş (áážááˇáş developer 000 áááşá¸áááˇáş) áážááááˇáş ááášááŹáˇáĄááźáŽá¸ááŻáśá¸á áťáąá¸áá˝ááşááźá áşáááşá
RapidAPI áááş Third-party APIs ááťáŹá¸áážááˇáşáĄááŻááşááŻááşáááşáĄáá˝ááşáá áşááŻáááşá¸ááąáŹáĄááşááŹááąáˇá áşáááŻááąáŹááşááśáˇááąá¸ááŻáśááŹáááááşááááŻááşáááŻááş API ááťáŹá¸áááŻááťááşááźááşáá˝ááşáá°á á˝áŹááŻááşááąáááşá á˝ááşá¸áááşáááŻáááşá¸ááąá¸áááşá
áááŻáˇ
áááşá API ááᯠHeroku áá˝ááşáááşáááŻáˇáá˝ážááˇáşáááşáááşáááşá¸á
1. Heroku ááᯠinstall ááŻááşááŤá
ááááĄáááˇáşáážáŹ Heroku Command Line Interface (CLI) ááᯠá áŹáááşá¸áá˝ááşá¸ááźáŽá¸ áááˇáşáá˝ááşá¸áááşááźá áşáááşá áááşá¸áááş Ubuntu 16+ áá˝ááşáĄááŻááşááŻááşáááşá
sudo snap install herokuâclassic
áááŻáˇááąáŹááş áĄááąáŹááˇáşáááşááŤ
heroku áĄááąáŹááˇáşáááşááŤá
2. áááŻáĄááşááąáŹáááŻááşááťáŹá¸áááŻáááˇáşááŤá
áááŻááťá˝ááşáŻááşáááŻáˇáĄáááŽááąá¸áážááşá¸áážááááŻááşáá˝á˛áá áşááŻáááŻáˇáá˝ážááˇáşáááşáááşáááŻááşááťáŹá¸áááŻáááˇáşáááşáááŻáĄááşáááş-
- áááŻáĄááşááąáŹ Python modules á áŹáááşá¸áážááˇáşáĄáá° requirement.txt;
- áĄáááŽááąá¸áážááşá¸áááŻáááşáááşáááş áááşáááˇáş command ááťáŹá¸áááŻááŻááşááąáŹááşááááşáááŻáááşáážááşááąá¸ááąáŹ Procfileá
- .gitignore - ááŹááŹááąáŤáşáá˝ááşááááŻáĄááşááąáŹáááŻááşááťáŹá¸áááŻáááşááŻááşáááşá
require.txt áááŻááşáá˝ááş áĄáąáŹááşááŤá áŹááźáąáŹááşá¸ááťáŹá¸ ááŤáááşááŤáááş-
- áá°á¸
- ááŻáááşá¸-áĄááŹá¸áá°
- ááąáááş
ááťá˝ááşáŻááşáááŻáˇááĄááşáááŽááąá¸áážááşá¸áááŻááŹááŹááąáŤáşáá˝ááşáááşáááşáááşáááŻáĄááşááąáŹááźáąáŹááˇáşááťá˝ááşáŻááşáááŻáˇáááşááąáááşáááŹá¸ (Python WSGI HTTP Server) áááŻá áŹáááşá¸áá˝ááşáááˇáşáá˝ááşá¸ááŹá¸ááźáąáŹááşá¸áááááźáŻááŤá
ááááŻáááŻááşáá˝ááş-
áááş- ááąáááşáĄááşááş-áĄááşááş
.gitignore á áĄááźáąáŹááşá¸áĄááŹááťáŹá¸
*.pyc
__pycache__/
áááŻááşááťáŹá¸ááᯠáááŻáááşááŽá¸ááźáŽá¸ááąáŹáĄááŤá git repo ááᯠá áááşááźáŽá¸ áááááźáŻáááŻááşááźááŤá ááŻáˇá
git init
git add
git commit -m "First API commit"
3. Heroku áĄáááŽááąá¸áážááşá¸áĄáá áşááᯠáááşááŽá¸ááŤá
heroku create
ááťá˝ááşáŻááşáááŻáˇáááş ááŹá ááŹááŹááá˝á˛áĄáŹá¸ áĄááąá¸ááááşá¸ Heroku repo áááŻáˇ áá˝ááşá¸áááŻáˇáááş-
git push heroku master
áááŻáááşáááş áá˝ážááşááźáŹá¸ááťááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá API áááşááąáŹááşáážáŻáááŻáá˝ááˇáşááźááşá¸ááźááˇáş á áááşáááŻááşáááş-
heroku ps:scale web=1
heroku open
API áážáŹ ááážááááŻááşááŤáááşá
áááşá Python API ááᯠRapidAPI á áťáąá¸áá˝ááşáá˝ááş áááşáááŻáˇáááˇáşáááşáááşá¸á
áááşá API áááşááąáŹááşáážáŻááᯠHeroku áá˝ááş áá˝ážááˇáşáááşááźáŽá¸áááşáážááˇáş áááşá¸ááᯠRapid API áá˝ááş áááˇáşáá˝ááşá¸áááŻááşáááşá ááŽáážáŹ
1. RapidAPI áĄááąáŹááˇáşáá áşááŻáááşááŽá¸ááŤá
áĄááá˛áˇáĄááąáŹááˇáşáá
áşáᯠáážááşááŻáśáááşá፠- áááşá¸ááᯠFacebooká Googleá GitHub ááŻáśá¸ááźáŽá¸ ááŻááşááąáŹááşáááŻááşáááşá
2. ááááşá¸ááťáŻááşáážáŻááąáŹááşáááŻáˇ API áááŻáááˇáşááŤá
3. áááŻáˇááąáŹááşá áááşá API áážááˇáşáááşáááşááąáŹ áĄáá˝áąáá˝áąáĄááťááşáĄáááşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááŤá
4. âAdd APIâ ááᯠáážáááşááźáŽá¸ááąáŹááş ááťá˝ááşáŻááşáááŻáˇá API áááŻááşáᏠáĄááťááşáĄáááşááťáŹá¸ááᯠáááşáááˇáşáá˝ááşá¸áááŻááşáááˇáş á
áŹááťááşáážáŹáĄáá
áşáá
áşáᯠááąáŤáşááŹááŤáááşá
5. ááᯠáááşáááş API áĄááŻáśá¸áážááşááťáŹá¸ááᯠáááŻááşáááŻááşáááˇáşáá˝ááşá¸áááŻááşáááş áááŻáˇáááŻááş ááąáŤááşá¸ááŻááşááŻááşáááŻááşáááşá
ááąáŹááşá¸ááźáŽá ááᯠááťá˝ááşáŻááşáááŻáˇáááş ááťá˝ááşáŻááşáááŻáˇá API ááĄááŻáśá¸áážááşááťáŹá¸ááᯠEndpoints á
áŹááťááşáážáŹáá˝ááş áááşáážááşáááşáááŻáĄááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááá
ášá
áá˝ááşá áĄááŻáśá¸áážááşááťáŹá¸áááş CRUD ááááąáŹáááŹá¸ (ááá°áááşá áááŻáˇá
áşáááşáááşá áááˇáşáááşá ááťááşáááş) áážááˇáş áááşáááŻááşáááşá
áááŻáˇááąáŹááşá áááşáááş ááťáááşá¸áááŻá¸ááŹá¸ááťááş (ID áááş ááŻáśááąááźá
áşááťážááş) áááŻáˇáááŻááş áááşáážááşááŹá¸ááąáŹ ID áĄáá˝ááşáááŻá¸ááŹá¸ááťááşááᯠááźááááˇáş GET AI Quote áĄááŻáśá¸áážááşááᯠáááşááŽá¸áááş áááŻáĄááşáááşá
áĄááŻáśá¸áážááşáá áşáᯠáááşááŽá¸áááş "áĄááŻáśá¸áážááşááᯠáááşááŽá¸ááŤ" áááŻááşááᯠáážáááşááŤá
ááťá˝ááşáŻááşáááŻáˇáááş áĄááźáŹá¸ááąáŹ API áĄááŻáśá¸áážááşááťáŹá¸áĄáŹá¸ááŻáśá¸áĄáá˝ááş á¤ááŻááşáááşá¸á
ááşááᯠááźááşááŻááşááŤáááşá ááŤááŤáá˛! ááŻááşáá°ááŤáááşá áááşáááş áááşá API áááŻááŻááşááąáááŻááşááŤááźáŽá
áĄáŹá¸ááŻáśá¸áĄáááşááźáąááŤá API á áŹááťááşáážáŹáááş á¤áá˛áˇáááŻáˇááźá áşááąáááş-
ááąáŹááşááťááş
á¤ááąáŹááşá¸ááŤá¸áá˝ááşá Python áá˝ááş áááşááááŻááşáááŻááş RESTful API áááşááąáŹááşáážáŻááᯠáááşááŽá¸ááźááşá¸ááŻááşáááşá¸á ááşáážááˇáş API ááᯠHeroku cloud áááŻáˇ ááźááˇáşááťáááźááşá¸áážááˇáş RapidAPI áááşá¸áá˝ážááşáááŻáˇ áááˇáşááźááşá¸ááŻááşáááşá¸á ááşáááŻáˇáážááˇáşáĄáá° ááąáˇááŹáá˛áˇáááşá
áááŻáˇááąáŹáş á ááşá¸áááşááŹá¸áážááşá¸áá˝ááş API áá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻá áĄááźáąááśáá°ááťáŹá¸áááŻáᏠááźááá˛áˇáááş - ááŻáśááźáŻáśááąá¸á áĄáážáŹá¸ááśáááŻááşáááşáážááˇáş ááťá˛áˇáá˝ááşáááŻááşáážáŻáá˛áˇáááŻáˇááąáŹ áá˝á˛ááźáŹá¸áážáŻááťáŹá¸ááᯠáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸ááźááşá¸áááźáŻááŤá
áĄá
á
áşáĄáážááş API áááŻááŽáá˝ááşááąáŹáĄááŤá á¤áĄááŹáĄáŹá¸ááŻáśá¸áááŻáááˇáşáá˝ááşá¸á
ááşá¸á
áŹá¸áááşáááŻáĄááşáááşá
source: www.habr.com