рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдЬрд░ рддреБрдореНрд╣реА рд╣рд╛ рд▓реЗрдЦ рд╡рд╛рдЪрдд рдЕрд╕рд╛рд▓, рддрд░ рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣реА API (рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕) рд╡рд╛рдкрд░рддрд╛рдирд╛ рдЙрдШрдбрд▓реЗрд▓реНрдпрд╛ рд╢рдХреНрдпрддрд╛рдВрд╢реА рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЖрд╣рд╛рдд.

рддреБрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЕрдиреЗрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдкреИрдХреА рдПрдХ рдЬреЛрдбреВрди, тАЛтАЛрддреБрдореНрд╣реА рдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡реВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рд╕рд╣ рддреНрдпрд╛рд╕ рдкреВрд░рдХ рдХрд░реВ рд╢рдХрддрд╛. рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣реА рдПрдЦрд╛рджреЗ рдЕрджреНрд╡рд┐рддреАрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЕрд╕реЗрд▓ рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдореБрджрд╛рдпрд╛рд╕рд╣ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рддрд░?

рдЙрддреНрддрд░ рд╕реЛрдкреЗ рдЖрд╣реЗ: рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ API рддрдпрд╛рд░ рдХрд░рд╛.

рдЬрд░реА рд╣реЗ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдПрдХ рдХрдареАрдг рдХрд╛рдо рд╡рд╛рдЯрдд рдЕрд╕рд▓реЗ рддрд░реА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЗ рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ. рдкрд╛рдпрдердирд╕рд╣ рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рддреЗ рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рджрд╛рдЦрд╡реВ.

рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рдп рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ

API рд╡рд┐рдХрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  • рдкрд╛рдпрдерди 3;
  • рдлреНрд▓рд╛рд╕реНрдХ тАФ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдзреА рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реЛрдкреА рдлреНрд░реЗрдорд╡рд░реНрдХ;
  • рдлреНрд▓рд╛рд╕реНрдХ-рдЖрд░рд╛рдорджрд╛рдпрдХ рдлреНрд▓рд╛рд╕реНрдХрд╕рд╛рдареА рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрд╣реЗ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ REST API рддреНрд╡рд░реАрдд рдЖрдгрд┐ рдХрдореАрддрдХрдореА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ.

рд╕реНрдерд╛рдкрдирд╛ рдЖрджреЗрд╢рд╛рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реА рдЬрд╛рддреЗ:

pip install flask-restful

рдЖрдореНрд╣реА рдирд╡рд╢рд┐рдХреНрдпрд╛рдВрд╕рд╛рдареА рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЧрд╣рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ:
C# рдордзреНрдпреЗ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдмреЙрдЯ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ - 26-28 рдСрдЧрд╕реНрдЯ. рдПрдХ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЧрд╣рди рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗрд▓реНрдкрд░ рдмреЙрдЯреНрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдЯреЗрд▓реАрдЧреНрд░рд╛рдо API рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрдгрд┐ рдЗрддрд░ рдмрд╛рд░рдХрд╛рд╡реЗ. рд╢реАрд░реНрд╖ рддреАрди рд╕рд╣рднрд╛рдЧреАрдВрдирд╛ рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕рдХрдбреВрди 30 рд░реВрдмрд▓ рдорд┐рд│рддреАрд▓.

рдЖрдкрдг рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА

рдЖрдореНрд╣реА рдмреЗрд╕рд┐рдХрд╕рд╣ рдПрдХ RESTful API рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгрд╛рд░ рдЖрд╣реЛрдд CRUID рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛.

рдХрд╛рд░реНрдп рдкреВрд░реНрдгрдкрдгреЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд░ рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рджреЛрди рд╕рдВрдЬреНрдЮрд╛ рд╕рдордЬреВрди рдШреЗрдК.

REST рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

REST API (рд░рд┐рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирд▓ рд╕реНрдЯреЗрдЯ рдЯреНрд░рд╛рдиреНрд╕рдлрд░) рдПрдХ API рдЖрд╣реЗ рдЬреЛ рдбреЗрдЯрд╛рдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рд╡рд╛рдкрд░рддреЛ.

REST API рдиреЗ рдХрд╛рд╣реА рдирд┐рдХрд╖ рдкреВрд░реНрдг рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд:

  • рдХреНрд▓рд╛рдпрдВрдЯ-рд╕рд░реНрд╡реНрд╣рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: рдХреНрд▓рд╛рдпрдВрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рдмреЕрдХрдПрдВрдб рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрдЕрд░рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддреЛ. рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рд╕реНрд╡рддрдВрддреНрд░ рдЖрд╣реЗрдд, рддреНрдпрд╛рдкреИрдХреА рдХреЛрдгрддреЗрд╣реА рджреБрд╕рд░реНтАНрдпрд╛рдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.
  • рд╕реНрдЯреЗрдЯрд▓реЗрд╕ - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдХреЛрдгрддрд╛рд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдирд╛рд╣реА. рд╕рддреНрд░ рд╕реНрдерд┐рддреА рдХреНрд▓рд╛рдпрдВрдЯ рдмрд╛рдЬреВрд▓рд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗ.
  • рдХреЕрд╢реЗрдмрд┐рд▓рд┐рдЯреА - рдПрдХреВрдг рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЕрд╢реЗ рдХрд░реВ рд╢рдХрддрд╛рдд.

CRUD рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

RAW рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдВрдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ рдЬреА рдЪрд╛рд░ рдореВрд▓рднреВрдд рдХреНрд░рд┐рдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЗ (рддрдпрд╛рд░ рдХрд░рд╛, рд╡рд╛рдЪрд╛, рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рд╣рдЯрд╡рд╛).

REST API рдордзреНрдпреЗ, рд╡рд┐рдирдВрддреА рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рд╡рд┐рдирдВрддреА рдкрджреНрдзрддреА рдкреЛрд╕реНрдЯ, рдЧреЗрдЯ, рдкреБрдЯ, рдбрд┐рд▓реАрдЯ рдпрд╛рдВрд╕рд╛рд░рдЦреНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдВрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рддрд╛рдд.

рдЖрддрд╛ рдЖрдореНрд╣реА рдореВрд▓рднреВрдд рдЕрдЯреА рд╣рд╛рддрд╛рд│рд▓реНрдпрд╛ рдЖрд╣реЗрдд, рдЖрдореНрд╣реА API рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реБрд░реВ рдХрд░реВ рд╢рдХрддреЛ.

рд╡рд┐рдХрд╛рд╕

рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдВрдЯреЗрд▓рд┐рдЬрдиреНрд╕рдмрджреНрджрд▓рдЪреНрдпрд╛ рдХреЛрдЯреНрд╕рдЪреЗ рднрд╛рдВрдбрд╛рд░ рддрдпрд╛рд░ рдХрд░реВрдпрд╛. AI рд╣реЗ рдЖрдЬ рд╕рд░реНрд╡рд╛рдд рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврдгрд╛рд▒реНрдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ рдЖрдгрд┐ AI рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Python рд╣реЗ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдзрди рдЖрд╣реЗ.

рдпрд╛ API рд╕рд╣, рдПрдХ рдкрд╛рдпрдерди рд╡рд┐рдХрд╕рдХ AI рдмрджреНрджрд▓ рддреНрд╡рд░реАрдд рд╢рд┐рдХреВ рд╢рдХрддреЛ рдЖрдгрд┐ рдирд╡реАрди рдпрд╢рд╛рдиреЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдК рд╢рдХрддреЛ. рд╡рд┐рдХрд╕рдХрд╛рдЪреЗ рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рдореМрд▓реНрдпрд╡рд╛рди рд╡рд┐рдЪрд╛рд░ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреЛ рддреНрдпрд╛рдВрдирд╛ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдордзреНрдпреЗ рдЬреЛрдбрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓.

рдЪрд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓реНрд╕ рдЖрдпрд╛рдд рдХрд░реВрди рдЖрдгрд┐ рдлреНрд▓рд╛рд╕реНрдХ рд╕реЗрдЯ рдХрд░реВрди рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрдпрд╛:

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

рдпрд╛ рд╕реНрдирд┐рдкреЗрдЯрдордзреНрдпреЗ, рдлреНрд▓рд╛рд╕реНрдХ, рдПрдкреАрдЖрдп рдЖрдгрд┐ рд░рд┐рд╕реЛрд░реНрд╕ рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рд╡рд░реНрдЧ рдЖрд╣реЗрдд.

Reqparse рд╣рд╛ рдлреНрд▓рд╛рд╕реНрдХ-рд░реЗрд╕реНрдЯрдлреБрд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ... рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореЙрдбреНрдпреВрд▓рдЪреА рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓.

рдЖрддрд╛ рдЖрдкрдг AI рдмрджреНрджрд▓ рдХреЛрдЯреНрд╕рдЪреЗ рднрд╛рдВрдбрд╛рд░ рддрдпрд╛рд░ рдХрд░реВ.

рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдкреЛ рдПрдВрдЯреНрд░реАрдордзреНрдпреЗ рд╣реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕реЗрд▓:

  • рдбрд┐рдЬрд┐рдЯрд▓ рдЖрдпрдбреА;
  • рдХреЛрдЯрдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдЪреЗ рдирд╛рд╡;
  • рдХреЛрдЯ

рд╣реЗ рдлрдХреНрдд рд╢рд┐рдХрдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдиреЛрдВрджреА 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 рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрд▓. рд╡рд░реНрдЧрд╛рдд рдЪрд╛рд░ рдкрджреНрдзрддреА рдШреЛрд╖рд┐рдд рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд: рдорд┐рд│рд╡рд╛, рдкреЛрд╕реНрдЯ рдХрд░рд╛, рдкреБрдЯ рдХрд░рд╛, рд╣рдЯрд╡рд╛.

рдЪрд▓рд╛ 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 рдкрджреНрдзрдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдЯ рдкрд░рдд рдХрд░рддреЗ, рдЙрджрд╛. рдХреЙрд▓ рдХрд░рддрд╛рдирд╛ рдкрджреНрдзрдд рдЖрдпрдбреА рд╕реЗрдЯ рдХреЗрд▓реЗрд▓рд╛ рдирд╡реНрд╣рддрд╛.

рдЬрд░ рддреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЕрд╕реЗрд▓, рддрд░ рдкрджреНрдзрдд рдЕрд╡рддрд░рдгрд╛рдВрдордзреНрдпреЗ рд╢реЛрдзрддреЗ рдЖрдгрд┐ рджрд┐рд▓реЗрд▓рд╛ ID рдЕрд╕рд▓реЗрд▓рд╛ рдПрдХ рд╢реЛрдзрддреЗ. рдХрд╛рд╣реАрд╣реА рди рдЖрдврд│рд▓реНрдпрд╛рд╕, "рдХреЛрдЯ рд╕рд╛рдкрдбрд▓рд╛ рдирд╛рд╣реА, 404" рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.

рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛, рд╡рд┐рдирдВрддреА рдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реНрдпрд╛рд╕ рдкрджреНрдзрдд 200 рдЪреА HTTP рд╕реНрдерд┐рддреА рдЖрдгрд┐ рдПрдВрдЯреНрд░реА рдЖрдврд│рд▓реА рдирд╕рд▓реНрдпрд╛рд╕ 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 рд╡рд╛рдкрд░реВрди, рддреНрдпрд╛рдиреЗ рд▓реЗрдЦрдХ рдЖрдгрд┐ рд╡рд┐рдирдВрддреАрдЪреЗ рдХреЛрдЯ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗ, рддреЗ params рд╢рдмреНрджрдХреЛрд╢рд╛рдд рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ.

рдирд┐рд░реНрджрд┐рд╖реНрдЯ ID рд╕рд╣ рдХреЛрдЯ рдЖрдзреАрдЪ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрджреНрдзрдд рдпреЛрдЧреНрдп рд╕рдВрджреЗрд╢ рдЖрдгрд┐ рдХреЛрдб 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 рдкрджреНрдзрдд, рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ, рдПрдХ ID рдЖрдгрд┐ рдЗрдирдкреБрдЯ рдШреЗрддреЗ рдЖрдгрд┐ reqparse рд╡рд╛рдкрд░реВрди рдХреЛрдЯ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ.

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдпрдбреАрд╕рд╣ рдХреЛрдЯ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрджреНрдзрдд рдирд╡реАрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣ рдЕрджреНрдпрддрдирд┐рдд рдХрд░реЗрд▓ рдЖрдгрд┐ рдирдВрддрд░ рдХреЛрдб 200 рд╕рд╣ рдЕрджреНрдпрддрдирд┐рдд рдХреЛрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрд▓. рдЕрджреНрдпрд╛рдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдпрдбреАрд╕рд╣ рдХреЛрдЯ рдирд╕рд▓реНрдпрд╛рд╕, рдХреЛрдб 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

рд╣реА рдкрджреНрдзрдд рдХреЛрдЯ рдЖрдпрдбреА рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдШреЗрддреЗ рдЖрдгрд┐ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗрд▓реА рд╕реВрдЪреА рд╡рд╛рдкрд░реВрди 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

API рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдд рдЖрд╣реЗ

API рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреНрдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╣реЗ рдХрд░реНрд▓ рдХрдиреНрд╕реЛрд▓ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдХрд┐рдВрд╡рд╛ Insomnia REST рдХреНрд▓рд╛рдпрдВрдЯ рд╡рд╛рдкрд░реВрди рдХрд┐рдВрд╡рд╛ рд░реЕрдкрд┐рдб API рд╡рд░ API рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдЖрдордЪреЗ API рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдд рдЖрд╣реЗ

RapidAPI рд╣реЗ 10 APIs (рдЖрдгрд┐ рд╕реБрдорд╛рд░реЗ 000 рджрд╢рд▓рдХреНрд╖ рд╡рд┐рдХрд╕рдХ) рдЕрд╕рд▓реЗрд▓реЗ рдЬрдЧрд╛рддреАрд▓ рд╕рд░реНрд╡рд╛рдд рдореЛрдареЗ рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рдЖрд╣реЗ.

RapidAPI рддреГрддреАрдп-рдкрдХреНрд╖ API рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд╡рд│ рдПрдХрдЪ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдд рдирд╛рд╣реА, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ API рдЬрд▓рдж рдЖрдгрд┐ рд╕рд╣рдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдердо рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рдХрд╛рд╣реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣реА рд╡рд╛рдкрд░реВ рд╣рд░реЛрдХреВ. рддреНрдпрд╛рдЪреНрдпрд╛рд╕реЛрдмрдд рдХрд╛рдо рдХреЗрд▓реНрдпрд╛рдиреЗ рдХреЛрдгрддреАрд╣реА рдЕрдбрдЪрдг рдпреЗрдК рдирдпреЗ, (рдЖрдкрдг рддреНрдпрд╛рдмрджреНрджрд▓ рдпреЗрдереЗ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдК рд╢рдХрддрд╛).

Heroku рд╡рд░ рддреБрдордЪреЗ API рдХрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рд╛рд╡реЗ

1. Heroku рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛.

рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ Heroku Command Line Interface (CLI) рдиреЛрдВрджрдгреА рдХрд░рдгреЗ рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ. рд╣реЗ Ubuntu 16+ рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ.

sudo рд╕реНрдиреЕрдк heroku --classic рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛

рдордЧ рдЖрдореНрд╣реА рд▓реЙрдЧ рдЗрди рдХрд░реВ:

heroku рд▓реЙрдЧрд┐рди

2. рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реНрд╕ рдЬреЛрдбрд╛.

рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рддреАрд▓ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдлрд╛рдпрд▓реА рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:

  • рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рд╕реВрдЪреАрд╕рд╣ requirements.txt;
  • Procfile, рдЬреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреНрдпрд╛ рдЖрдЬреНрдЮрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд рд╣реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ;
  • .gitignore - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЖрд╡рд╢реНрдпрдХ рдирд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рд╡рдЧрд│рдгреНрдпрд╛рд╕рд╛рдареА.

Requiments.txt рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рдУрд│реА рдЕрд╕рддреАрд▓:

  • рдлреНрд▓рд╛рд╕реНрдХ
  • рдлреНрд▓рд╛рд╕реНрдХ-рдЖрд░рд╛рдорджрд╛рдпрдХ
  • рдЧрдирд┐рдХреЙрд░реНрди

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЖрдореНрд╣реА рдЧрдирд┐рдХреЙрд░реНрди (рдкрд╛рдпрдерди WSGI HTTP рд╕рд░реНрд╡реНрд╣рд░) рд╕реВрдЪреАрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ рдХрд╛рд░рдг рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЪрд╛рд▓рд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ.

рдкреНрд░реЛрдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╣реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕реЗрд▓:

web: gunicorn app:app

.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 рдпреЗрдереЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕реЗрд▓ your-random-heroku-name.herokuapp.com/ai-quotes.

рддреБрдордЪрд╛ Python API RapidAPI рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕рдордзреНрдпреЗ рдХрд╕рд╛ рдЬреЛрдбрд╛рдпрдЪрд╛

Heroku рд╡рд░ API рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣реА рддреА рд░реЕрдкрд┐рдб API рдордзреНрдпреЗ рдЬреЛрдбреВ рд╢рдХрддрд╛. рдпреЗрдереЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░.

1. RapidAPI рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рд╛.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдЖрдореНрд╣реА рдПрдХ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЦрд╛рддреЗ рдиреЛрдВрджрдгреА рдХрд░рддреЛ - рд╣реЗ Facebook, Google, GitHub рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

2. рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓рдордзреНрдпреЗ API рдЬреЛрдбрд╛.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

3. рдкреБрдвреЗ, рддреБрдордЪреНрдпрд╛ API рдмрджреНрджрд▓ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд╣рд┐рддреА рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

4. тАЬAdd APIтАЭ рд╡рд░ рдХреНрд▓рд┐рдХ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдПрдХ рдирд╡реАрди рдкреГрд╖реНрда рджрд┐рд╕реЗрд▓ рдЬрд┐рдереЗ рддреБрдореНрд╣реА рдЖрдордЪреНрдпрд╛ API рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

5. рдЖрддрд╛ рддреБрдореНрд╣реА API рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛ swagger рдлрд╛рдЗрд▓ OpenAPI рд╡рд╛рдкрд░реВрди.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдмрд░рдВ, рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ API рдЪреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдкреЗрдЬрд╡рд░ рд╕реЗрдЯ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЕрдВрддрд┐рдо рдмрд┐рдВрджреВ CRUD рдЪреНрдпрд╛ рд╕рдВрдХрд▓реНрдкрдиреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд (рдорд┐рд│рд╡рд╛, рдкреЛрд╕реНрдЯ рдХрд░рд╛, рдареЗрд╡рд╛, рд╣рдЯрд╡рд╛).

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдкреБрдвреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ GET AI рдХреЛрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдЯ (рдЖрдпрдбреА рдбреАрдлреЙрд▓реНрдЯ рдЕрд╕рд▓реНрдпрд╛рд╕) рдХрд┐рдВрд╡рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдпрдбреАрд╕рд╛рдареА рдХреЛрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ.

рдПрдВрдбрдкреЙрдЗрдВрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ "рдПрдВрдбрдкреЙрдЗрдВрдЯ рддрдпрд╛рд░ рдХрд░рд╛" рдмрдЯрдгрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдЖрдореНрд╣реА рдЗрддрд░ рд╕рд░реНрд╡ API рдПрдВрдбрдкреЙрдЗрдВрдЯрд╕рд╛рдареА рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрдиреНрд╣рд╛ рдХрд░рддреЛ. рдЗрддрдХрдВрдЪ! рдЕрднрд┐рдирдВрджрди, рддреБрдореНрд╣реА рддреБрдордЪреЗ API рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ!

рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, API рдкреГрд╖реНрда рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕реЗрд▓:

рдкрд╛рдпрдердирдордзреНрдпреЗ рдПрдкреАрдЖрдп рд▓рд┐рд╣рд┐рдгреЗ (рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рд░реЕрдкрд┐рдбрдПрдкреАрдЖрдпрд╕рд╣)

рдирд┐рд╖реНрдХрд░реНрд╖

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдкрд╛рдпрдердирдордзреНрдпреЗ рдЖрдордЪреА рд╕реНрд╡рддрдГрдЪреА RESTful API рд╕реЗрд╡рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╣, Heroku рдХреНрд▓рд╛рдЙрдбрд╡рд░ API рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдгрд┐ RapidAPI рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЬреЛрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрддреВрди рдЧреЗрд▓реЛ.

рдкрд░рдВрддреБ рдЪрд╛рдЪрдгреА рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ, API рд╡рд┐рдХрд╛рд╕рд╛рдЪреА рдХреЗрд╡рд│ рдореВрд▓рднреВрдд рддрддреНрддреНрд╡реЗ рджрд░реНрд╢рд╡рд┐рд▓реА рдЧреЗрд▓реА - рд╕реБрд░рдХреНрд╖рд╛, рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдЖрдгрд┐ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдмрд╛рд░рдХрд╛рд╡реЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдирд╛рд╣реАрдд.

рд╡рд╛рд╕реНрддрд╡рд┐рдХ API рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛, рд╣реЗ рд╕рд░реНрд╡ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛