แแฃ แแ แกแขแแขแแแก แแแแฎแฃแแแแ, แแแแแ แฃแแแ แแชแแแแ แแ แจแแกแแซแแแแแแแแแก, แ แแแแแแแช แแฎแกแแแแ API-แก (แแแแแแแชแแแก แแ แแแ แแแแ แแแแก แแแขแแ แคแแแกแ) แแแแแงแแแแแแกแแก.
แแฅแแแแก แแแแแแแชแแแจแ แแ แแแแแ แกแแฏแแ แ API-แแแ แแ แแแก แแแแแขแแแแ, แจแแแแซแแแแ แแแแคแแ แแแแแ แแ แแแแแแแชแแแก แคแฃแแฅแชแแแแแ แแแ แแ แจแแแแกแแ แแแ แกแแญแแ แ แแแแแชแแแแแแ. แแแแ แแ แ แ แแแฎแแแแ, แแฃ แแฅแแแ แจแแฅแแแแแ แฃแแแแแแฃแ แ แคแฃแแฅแชแแ, แ แแแแแแช แแกแฃแ แ แแแฃแแแแ แแ แกแแแแแแแแแแแก?
แแแกแฃแฎแ แแแ แขแแแแ: แแญแแ แแแแแ
แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แจแแแซแแแแ แแแแแแแ แ แแฃแ แแแแชแแแแ แฉแแแแแก, แกแแแแแแแแแแจแ แกแแแแแแ แแแ แขแแแแ. แฉแแแ แแแฉแแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแแแ แแก Python-แแ.
แ แแช แแญแแ แแแแแ แแแกแแฌแงแแแแ
API-แก แจแแแฃแจแแแแแ แแแแแฎแแแก:
- แแแแแแ 3;
แกแแแฏแแ แแกแแแแก โ แแแ แขแแแ แแ แแแแแแแ แแแแแกแแงแแแแแแแ แฉแแ แฉแ แแแ แแแแแแแชแแแแแก แจแแกแแฅแแแแแแ;แแแแแ-แแแกแแแแแแ แแ แแก Flask-แแก แแแคแแ แแแแแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แกแฌแ แแคแแ แแ แแแแแแแแฃแ แ แแแแคแแแฃแ แแชแแแ แแแแแแแแแ แแ REST API.
แแแกแขแแแแชแแ แฎแแ แชแแแแแแแ แแ แซแแแแแแ:
pip install flask-restful
แฉแแแ แแแ แฉแแแ แฃแคแแกแ แแแขแแแกแแฃแ แแ แแแ แแแแ แแแแก แแแแฌแงแแแแแแแแก:
Telegram แแแขแแก แแแแแแแแ แแแ C#-แจแ โ 26โ28 แแแแแกแขแ. แฃแคแแกแ แแแขแแแกแแฃแ แ, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แแแแฎแแแ แ แแแขแแแ, Telegram API-แกแแแ แแฃแจแแแแแก แแแฎแแกแแแแแแแแแ แแ แกแฎแแ แแแฃแแแกแ. แกแแแ แกแแฃแแแแแกแ แแแแแฌแแแ แแแแฆแแแก 30 แ แฃแแแก Skillbox-แแกแแแ.
แกแแแแ แแแแฌแงแ
แฉแแแ แแแแแ แแแ RESTful API-แก แจแแแฃแจแแแแแแก แกแแแแแแกแ
แแแแชแแแแก แกแ แฃแแแ แแแกแแแแแแ, แแแแแแแ แแแแแ แแแฎแกแแแแแ แแ แ แขแแ แแแแ.
แ แ แแ แแก REST?
REST API (Representational State Transfer) แแ แแก API, แ แแแแแแช แแงแแแแแก HTTP แแแแฎแแแแแแก แแแแแชแแแแ แแแชแแแแกแแแแก.
REST API-แแแ แฃแแแ แแแแแงแแคแแแแแแแก แแแ แแแแฃแ แแ แแขแแ แแฃแแแแก:
- แแแแแแขแ-แกแแ แแแ แแก แแ แฅแแขแแฅแขแฃแ แ: แแแแแแขแ แฃแ แแแแ แแฅแแแแแแก แแแแฎแแแ แแแแแก แแแขแแ แคแแแกแแแ, แฎแแแ แกแแ แแแ แ แฃแ แแแแ แแฅแแแแแแก backend-แแแ แแ แแแแแชแแแแ แแแฆแแแแแกแแแ. แแแแแแขแ แแ แกแแ แแแ แ แแแแแฃแแแแแแแแแ, แแแแแกแแแแ แ แแแแแแแ แจแแแซแแแแ แจแแแชแแแแแก แแแแ แแกแแแ แแแแแฃแแแแแแแแ.
- แแแฅแแแแฅแแแแแก แแแ แแจแ - แกแแ แแแ แแ แแแแแแขแแก แแแแแชแแแแแ แแ แแแแฎแแแ. แกแแกแแแก แแแแแแแ แแแแ แแแแฎแแแ แแแแแแขแแก แแฎแแ แแก.
- Cacheability - แแแแแแขแแแก แจแแฃแซแแแแ แกแแ แแแ แแก แแแกแฃแฎแแแแก แฅแแจแแ แแแ แกแแแ แแ แแฃแจแแแแแก แแแกแแฃแแฏแแแแกแแแแแ.
แ แ แแ แแก CRUD?
แแ แฃแ แแ แแก แแ แแแ แแแแ แแแแก แแแแชแแคแชแแ, แ แแแแแแช แแฆแฌแแ แก แแแฎ แซแแ แแแแ แแแฅแแแแแแแก (แจแแฅแแแ, แฌแแแแแฎแแ, แแแแแฎแแแแ แแ แฌแแจแแ).
REST API-แจแ แแแแฎแแแแแก แขแแแแแ แแ แแแแฎแแแแแก แแแแแแแแ แแแกแฃแฎแแกแแแแแแแแ แแกแแ แฅแแแแแแแแแ, แ แแแแ แแชแแ แแแแแฅแแแงแแแแ, แแแฆแแแ, แแแแแแ, แฌแแจแแ.
แแฎแแ, แ แแแแกแแช แฉแแแ แแแแแแฎแแแแ แซแแ แแแแแ แแแ แแแแแ, แจแแแแแซแแแ แแแแแฌแงแแ API-แก แจแแฅแแแ.
แแแแแแแแ แแแ
แแแแแ แจแแแฅแแแแ แชแแขแแขแแแแก แกแแชแแแ แฎแแแแแแฃแ แ แแแขแแแแฅแขแแก แจแแกแแฎแแ. AI แแฆแแกแแฆแแแแแ แแ แ-แแ แแ แงแแแแแแ แกแฌแ แแคแแ แแแแ แแ แขแแฅแแแแแแแแ แแ Python แแ แแก แแแแฃแแแ แฃแแ แแแกแขแ แฃแแแแขแ AI-แกแแแ แแฃแจแแแแแกแแแแก.
แแ API-แแ Python-แแก แแแแแแแแแ แก แจแแฃแซแแแ แกแฌแ แแคแแ แแแแแแก AI-แแก แจแแกแแฎแแ แแ แจแแแแแแแแฃแแ แแงแแก แแฎแแแ แแแฆแฌแแแแแแ. แแฃ แแแแแแแแแ แก แแฅแแก แฆแแ แแแฃแแ แแแ แแแ แแ แแแแแแ, แแแก แจแแแซแแแแ แแแแ แแแแแขแแแ แกแแชแแแจแ.
แแแแแฌแงแแ แกแแญแแ แ แแแแฃแแแแแก แแแแแ แขแแ แแ 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 แแแแฎแแแแแก แแแแแแแแก แแแขแแ แคแแแกแ... แแฅแแแ แแกแแแ แแแแญแแ แแแแแ แจแแแแฎแแแแแแ แแแแฃแแ แจแแแแฎแแแแแแ แชแแขแแขแแก แกแแฉแแแแแแแแ.
แแฎแแ แฉแแแ แจแแแฅแแแแ แชแแขแแขแแแแก แกแแชแแแก แฎแแแแแแฃแ แ แแแขแแแแฅแขแแก แจแแกแแฎแแ.
แ แแแแก แแแแแแฃแแ แฉแแแแฌแแ แ แจแแแชแแแก:
- แชแแคแ แฃแแ ID;
- แชแแขแแขแแก แแแขแแ แแก แกแแฎแแแ;
- แชแแขแแขแ.
แแแแแแแแ แแก แแฎแแแแ แกแแกแฌแแแแ แแแแแแแแแ, แฉแแแ แแแแแฎแแแ แงแแแแ แฉแแแแฌแแ แก แแแแแแแก แกแแแจแ. แ แแแแฃแ แแแแแแแชแแแจแ, แฉแแแ แกแแแแ แแฃแแแ แแแแแแแงแแแแแ แแแแแชแแแแ แแแแแก.
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."
}
]
แแฎแแ แฉแแแ แฃแแแ แจแแแฅแแแแ Quote แ แแกแฃแ แกแแก แแแแกแ, แ แแแแแแช แแแแกแแแฆแแ แแแก แฉแแแแ API แแแแ แฌแแ แขแแแแแแก แแแแ แแชแแแแก. แแแแกแจแ แฃแแแ แแแแแชแฎแแแแแก แแแฎแ แแแแแแ: แแแฆแแแ, แแแแแฅแแแงแแแแ, แแแงแแแแแ, แฌแแจแแ.
แแแแแฌแงแแ 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
GET แแแแแแ แแแ แฃแแแแก แจแแแแฎแแแแแ แชแแขแแขแแก, แแฃ ID แจแแแชแแแก แแแแฃแแแกแฎแแแ แแแแจแแแแแแแแก, แ.แ. แแแแแแแก แแแ แแแแแกแแก ID แแ แแงแ แแแแแแแแฃแแ.
แแฃ แแก แแแงแแแแแฃแแแ, แแแจแแ แแแแแแ แแซแแแก แแ แญแงแแแแแก แจแแ แแก แแ แแแฃแแแแก แแแแก, แ แแแแแแช แจแแแชแแแก แแแชแแแฃแ ID-แก. แแฃ แแแ แแคแแ แ แแแแซแแแแ, แแแแแฉแแแแแ แจแแขแงแแแแแแแ "แชแแขแแขแ แแแ แแแแซแแแแ, 404".
แแแฎแกแแแแแ, แแแแแแ แแแ แฃแแแแก HTTP แกแขแแขแฃแกแก 200, แแฃ แแแแฎแแแแ แฌแแ แแแขแแแฃแแ แแงแ แแ 404, แแฃ แฉแแแแฌแแ แ แแแ แแแแซแแแแ.
แแฎแแ แแแแแ แจแแแฅแแแแ 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 แแแแแแ แแ แแแ.
แแฎแแ แฉแแแ แแฅแแแแ 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-แก แแ แจแแงแแแแแก แแ แแแแแแแแแแก แชแแขแแขแแก แแแ แแแแขแ แแแก reqparse-แแก แแแแแงแแแแแแ.
แแฃ แชแแขแแขแ แแแแแแแแฃแแ 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-แแ
* Debugger แแฅแขแแฃแ แแ!
* แแแแแ แแแแก PIN: XXXXXXX
API-แก แขแแกแขแแ แแแ
API-แแก แจแแฅแแแแก แจแแแแแ แกแแญแแ แแ แแแกแ แขแแกแขแแ แแแ.
แแก แจแแแซแแแแ แแแแแแแแก curl console แฃแขแแแแขแแก แแ Insomnia REST แแแแแแขแแก แแแแแงแแแแแแ, แแ API-แแก แแแแแฅแแแงแแแแแ Rapid API-แแ.
แฉแแแแ API-แก แแแแแฅแแแงแแแแ
RapidAPI แแ แแก แงแแแแแแ แแแแ แแแแแ แ แแกแแคแแแแจแ 10-แแ แแแขแ API-แแ (แแ แแแแฎแแแแแแ 000 แแแแแแแ แแแแแแแแแ แแแแ).
RapidAPI แแ แ แแฎแแแแ แฃแแ แฃแแแแแงแแคแก แแ แแแแ แแแขแแ แคแแแกแก แแแกแแแ แแฎแแ แแก API-แแแแแ แแฃแจแแแแแกแแแแก, แแ แแแแ แกแแจแฃแแแแแแก แแแซแแแแ แกแฌแ แแคแแ แแ แแแ แขแแแแ แแแแแแฅแแแงแแแ แแฅแแแแ แกแแแฃแแแ แ API.
แแแ
แ แแแแ แแแแแแฅแแแงแแแ แแฅแแแแ API Heroku-แแ
1. แแแแแแกแขแแแแ แแ Heroku.
แแแ แแแแ แแแแแฏแ แแ แแก Heroku Command Line Interface (CLI) แ แแแแกแขแ แแชแแ แแ แแแกแขแแแแชแแ. แแก แแฃแจแแแแก Ubuntu 16+-แแ.
sudo snap install heroku --classic
แจแแแแแ แฉแแแ แจแแแแแแแ แ:
แฐแแ แแแฃ แจแแกแแแ
2. แแแแแแขแแ แกแแญแแ แ แคแแแแแแ.
แแฎแแ แฉแแแ แฃแแแ แแแแแแแขแแ แคแแแแแแ แแแแแกแแฅแแแงแแแแแแ แฉแแแแก แแแแแแแชแแแจแ แแ แกแแแฃแ แกแแฅแแฆแแแแแจแ:
- แแแแฎแแแแแแ.txt แแแแแแแก แกแแญแแ แ แแแแฃแแแแแก แกแแแ;
- แแ แแคแแแ, แ แแแแแแช แแแแกแแแฆแแ แแแก แ แแแแแ แแ แซแแแแแแแ แฃแแแ แจแแกแ แฃแแแแก แแแแแแแชแแแก แแแกแแจแแแแแ;
- .gitignore - แคแแแแแแแก แแแแแ แแชแฎแแ, แ แแแแแแแช แแ แแ แแก แกแแญแแ แ แกแแ แแแ แแ.
แแแแฎแแแแแแ.txt แคแแแแ แจแแแชแแแก แจแแแแแ แฎแแแแแก:
- flask
- แแแแแ-แแแแกแแแแแแแแ
- แแฃแแแแแ แแ
แแแฎแแแ, แแแแแแแแแกแฌแแแแ, แ แแ แฉแแแ แแแแแแแขแแ Gunicorn (Python WSGI HTTP แกแแ แแแ แ) แกแแแจแ, แ แแแแแ แฉแแแแ แแแแแแแชแแแก แกแแ แแแ แแ แแแจแแแแ แแแญแแ แแแแ.
แแ แแคแแแ แจแแแชแแแก:
แแแ: Gunicorn แแแแแแแชแแ: แแแแแแแชแแ
.gitignore-แแก แจแแแแแ แกแ:
*.pyc
__pycache__/
แแฎแแ, แ แแแแกแแช แคแแแแแแ แแฅแแแแแ, แแแแแ, แแแแชแแแแแแแชแแ แแแแฃแแแแแ git repo-แก แแ แจแแแแกแ แฃแแแ:
git init
git add
git commit -m "First API commit"
3. แจแแฅแแแแแ แแฎแแแ Heroku แแแ.
heroku create
แกแแแแแแกแขแ แ แคแแแแแแแก แแแกแขแแแชแแฃแ Heroku แ แแแแจแ แแแแแขแแแ:
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-แก แแแแ แฌแแ แขแแแแแ แแแแ แฌแแ แขแแแแแแก แแแแ แแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แแแแ แฌแแ แขแแแแแ แจแแแกแแแแแแแ CRUD-แแก แแแแชแแคแชแแแก (แแแแฆแ, แแแแแแแแกแ, แแแแงแแแ, แฌแแจแแแ).
แจแแแแแแ, แแฅแแแ แฃแแแ แจแแฅแแแแ GET AI Quote แกแแแแแแ แฌแแ แขแแแ, แ แแแแแแช แแฉแแแแแแก แจแแแแฎแแแแแ แชแแขแแขแแก (แแฃ ID แแ แแก แแแแฃแแแกแฎแแแแ) แแ แชแแขแแขแ แแแแแแแแฃแแ ID-แกแแแแก.
แกแแแแแแ แฌแแ แขแแแแก แจแแกแแฅแแแแแแ, แแฅแแแ แฃแแแ แแแแญแแ แแ แฆแแแแแก "แจแแฅแแแแแ แแแแ แฌแแ แขแแแ".
แฉแแแ แแแแแแ แแแ แแ แแ แแชแแกแก แงแแแแ แกแฎแแ API แกแแแแแแ แฌแแ แขแแแแกแแแแก. แฒกแฃแ แแก แแ แแก! แแแแแชแแแ, แแฅแแแ แแแแแแฅแแแงแแแ แแฅแแแแ API!
แแฃ แงแแแแแคแแ แ แแแ แแแ แฌแแแแแ, API แแแแ แแ แแกแ แแแแแแงแฃแ แแแ:
แแแกแแแแ
แแ แกแขแแขแแแจแ แฉแแแ แแแแแแ แแ Python-แจแ แฉแแแแ RESTful API แกแแ แแแกแแก แจแแฅแแแแก แแ แแชแแกแ, แฐแแ แแแฃแก แฆแ แฃแแแแจแ API-แก แแแแแฅแแแงแแแแแก แแ RapidAPI แแแ แแฅแขแแ แแแจแ แแแแแขแแแแก แแ แแชแแกแจแ.
แแแแ แแ แกแแขแแกแขแ แแแ แกแแแจแ แแแฉแแแแแแ แแงแ แแฎแแแแ API แแแแแแแแ แแแแก แซแแ แแแแแ แแ แแแชแแแแแ - แแ แแงแ แแแแแแแแกแฌแแแแแฃแแ แแกแแแ แแแฃแแแกแ, แ แแแแ แแชแแ แฃแกแแคแ แแฎแแแแ, แจแแชแแแแแแแก แขแแแแ แแแขแแแ แแ แแแกแจแขแแแฃแ แแแ.
แ แแแแฃแ แ API-แแก แจแแแฃแจแแแแแแกแแก แแก แงแแแแแคแแ แ แฃแแแ แแงแแก แแแแแแแแกแฌแแแแแฃแแ.
แฌแงแแ แ: www.habr.com