เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เชœเซ‹ เชคเชฎเซ‡ เช† เชฒเซ‡เช– เชตเชพเช‚เชšเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เช•เชฆเชพเชš เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชเชตเซ€ เชถเช•เซเชฏเชคเชพเช“เชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เช›เซ‹ เชœเซ‡ 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 เชถเซเช‚ เช›เซ‡?

เชธเซ€เช†เชฐเชฏเซเชกเซ€ เชเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เช–เซเชฏเชพเชฒ เช›เซ‡ เชœเซ‡ เชšเชพเชฐ เชฎเซ‚เชณเชญเซ‚เชค เช•เซเชฐเชฟเชฏเชพเช“เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ‡ เช›เซ‡ (เชฌเชจเชพเชตเซ‹, เชตเชพเช‚เชšเซ‹, เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ‹).

REST API เชฎเชพเช‚, เชตเชฟเชจเช‚เชคเซ€เชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เช…เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชชเซ‹เชธเซเชŸ, เช—เซ‡เชŸ, เชชเซเชŸ, เชกเชฟเชฒเซ€เชŸ เชœเซ‡เชตเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡.

เชนเชตเซ‡ เช…เชฎเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชถเชฐเชคเซ‹ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซเชฏเซ‹ เช›เซ‡, เช…เชฎเซ‡ API เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชตเชฟเช•เชพเชธ

เชšเชพเชฒเซ‹ เช†เชฐเซเชŸเชฟเชซเชฟเชถเชฟเชฏเชฒ เช‡เชจเซเชŸเซ‡เชฒเชฟเชœเชจเซเชธ เชตเชฟเชถเซ‡เชจเชพ เช…เชตเชคเชฐเชฃเซ‹เชจเซ‹ เชญเช‚เชกเชพเชฐ เชฌเชจเชพเชตเซ€เช. AI เช เช†เชœเซ‡ โ€‹โ€‹เชธเซŒเชฅเซ€ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชคเซ€ เชคเช•เชจเซ€เช•เซ‹เชฎเชพเช‚เชจเซ€ เชเช• เช›เซ‡, เช…เชจเซ‡ Python เช AI เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชธเชพเชงเชจ เช›เซ‡.

เช† API เชธเชพเชฅเซ‡, เชชเชพเชฏเชฅเซ‹เชจ เชกเซ‡เชตเชฒเชชเชฐ เชเชกเชชเชฅเซ€ AI เชตเชฟเชถเซ‡ เชœเชพเชฃเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเชตเซ€ เชธเชฟเชฆเซเชงเชฟเช“เชฅเซ€ เชชเซเชฐเซ‡เชฐเชฟเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชชเชพเชธเซ‡ เช† เชตเชฟเชทเชฏ เชชเชฐ เชฎเซ‚เชฒเซเชฏเชตเชพเชจ เชตเชฟเชšเชพเชฐเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เชถเซ‡.

เชšเชพเชฒเซ‹ เชœเชฐเซ‚เชฐเซ€ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เช†เชฏเชพเชค เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชซเซเชฒเชพเชธเซเช• เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช:

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

เช† เชธเซเชจเชฟเชชเซ‡เชŸเชฎเชพเช‚, เชซเซเชฒเชพเชธเซเช•, เชเชชเซ€เช†เชˆ เช…เชจเซ‡ เชฐเชฟเชธเซ‹เชฐเซเชธ เช เช†เชชเชฃเชจเซ‡ เชœเซ‹เชˆเชคเชพ เชตเชฐเซเช—เซ‹ เช›เซ‡.

Reqparse เช เชซเซเชฒเชพเชธเซเช•-เชฐเซ‡เชธเซเชŸเชซเซเชฒ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ เชชเชพเชฐเซเชธเชฟเช‚เช— เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เช›เซ‡... เชฐเซ‡เชจเซเชกเชฎ เช•เซเชตเซ‹เชŸ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ AI เชตเชฟเชถเซ‡ เช…เชตเชคเชฐเชฃเซ‹เชจเซ‹ เชญเช‚เชกเชพเชฐ เชฌเชจเชพเชตเซ€เชถเซเช‚.

เชฆเชฐเซ‡เช• เชฐเซ‡เชชเซ‹ เชเชจเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เชนเชถเซ‡:

  • เชกเชฟเชœเชฟเชŸเชฒ 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."
    }
]

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช•เซเชตเซ‹เชŸ เชฐเชฟเชธเซ‹เชฐเซเชธ เช•เซเชฒเชพเชธ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เช…เชฎเชพเชฐเชพ 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

เชœเซ‹ IDเชฎเชพเช‚ เชกเชฟเชซเซ‹เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เชนเซ‹เชฏ เชคเซ‹ GET เชชเชฆเซเชงเชคเชฟ เชฐเซ‡เชจเซเชกเชฎ เช•เซเชตเซ‹เชŸ เช†เชชเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เชชเชฆเซเชงเชคเชฟเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ ID เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจ เชนเชคเซ€.

เชœเซ‹ เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเซ‡เชฒ เชนเซ‹เชฏ, เชคเซ‹ เชชเชฆเซเชงเชคเชฟ เช…เชตเชคเชฐเชฃเซ‹ เชตเชšเซเชšเซ‡ เชถเซ‹เชงเซ‡ เช›เซ‡ เช…เชจเซ‡ เช†เชชเซ‡เชฒ 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 เชชเชฆเซเชงเชคเชฟเช เช•เซเชตเซ‹เชŸ ID เชธเซเชตเซ€เช•เชพเชฐเซเชฏเซเช‚ เช›เซ‡. เชชเช›เซ€, reqparse เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเซ‡เชฃเซ‡ เชตเชฟเชจเช‚เชคเซ€เชฎเชพเช‚เชฅเซ€ เชฒเซ‡เช–เช• เช…เชจเซ‡ เช…เชตเชคเชฐเชฃ เชฎเซ‡เชณเชตเซเชฏเชพ, เชคเซ‡เชฎเชจเซ‡ params เชถเชฌเซเชฆเช•เซ‹เชถเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซเชฏเชพ.

เชœเซ‹ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค 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.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 เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช† curl เช•เชจเซเชธเซ‹เชฒ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช…เชฅเชตเชพ เช…เชจเชฟเชฆเซเชฐเชพ REST เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฅเชตเชพ Rapid API เชชเชฐ API เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เชจเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เช…เชฎเชพเชฐเชพ API เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

RapidAPI เช 10 เชฅเซ€ เชตเชงเซ API (เช…เชจเซ‡ เชฒเช—เชญเช— 000 เชฎเชฟเชฒเชฟเชฏเชจ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“) เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชจเซเช‚ เชธเซŒเชฅเซ€ เชฎเซ‹เชŸเซเช‚ เชฎเชพเชฐเซเช•เซ‡เชŸเชชเซเชฒเซ‡เชธ เช›เซ‡.

RapidAPI เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท API เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชชเชฃ เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ APIเชจเซ‡ เชเชกเชชเชฅเซ€ เช…เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชชเชฃ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชฎเชพเชŸเซ‡ เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเชนเซ‡เชฒเชพ เชคเซ‡เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชธเชฐเซเชตเชฐ เชชเชฐ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ เชนเซ‡เชฐเซ‹เช•เซ. เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชฅเซ€ เช•เซ‹เชˆ เชฎเซเชถเซเช•เซ‡เชฒเซ€ เชจ เชฅเชตเซ€ เชœเซ‹เชˆเช, (เชคเชฎเซ‡ เช…เชนเซ€เช‚ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ€ เชถเช•เซ‹ เช›เซ‹).

Heroku เชชเชฐ เชคเชฎเชพเชฐเซเช‚ API เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเซเช‚

1. Heroku เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹.

เชชเซเชฐเชฅเชฎ เชชเช—เชฒเซเช‚ Heroku เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ (CLI) เชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช…เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เช† Ubuntu 16+ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

sudo snap install heroku --classic

เชชเช›เซ€ เช…เชฎเซ‡ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ€เช เช›เซ€เช:

heroku เชฒเซ‰เช—เชฟเชจ

2. เชœเชฐเซ‚เชฐเซ€ เชซเชพเช‡เชฒเซ‹ เช‰เชฎเซ‡เชฐเซ‹.

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ‡ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเช‡เชฒเซ‹ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • เชœเชฐเซ‚เชฐเซ€ เชชเชพเชฏเชฅเซ‹เชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ€ เชฏเชพเชฆเซ€ เชธเชพเชฅเซ‡ requirements.txt;
  • Procfile, เชœเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฏเชพ เช†เชฆเซ‡เชถเซ‹ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชœเซ‹เชˆเช;
  • .gitignore - เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชฐเซ‚เชฐเซ€ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชฌเชพเช•เชพเชค เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡.

requirements.txt เชซเชพเช‡เชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ€ เชฒเซ€เชŸเซ€เช“ เชนเชถเซ‡:

  • เชซเซเชฒเชพเชธเซเช•
  • เชซเซเชฒเชพเชธเซเช•-เช†เชฐเชพเชฎเชฆเชพเชฏเช•
  • เช—เชจเช•เซ‹เชฐเซเชจ

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เช…เชฎเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚ gunicorn (Python WSGI HTTP เชธเชฐเซเชตเชฐ) เช‰เชฎเซ‡เชฐเซเชฏเซเช‚ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชพเชฐเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เชนเชถเซ‡:

web: gunicorn app:app

.gitignore เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€:

*.pyc
__pycache__/

เชนเชตเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชซเชพเช‡เชฒเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชšเชพเชฒเซ‹ เช—เชฟเชŸ เชฐเซ‡เชชเซ‹เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เช เช…เชจเซ‡ เช•เชฎเชฟเชŸ เช•เชฐเซ€เช:

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

3. เชจเชตเซ€ Heroku เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเซ‹.

heroku create

เชฎเชพเชธเซเชŸเชฐ เชฌเซเชฐเชพเชจเซเชšเชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชนเซ‡เชฐเซ‹เช•เซ เชฐเซ‡เชชเซ‹ เชชเชฐ เชงเช•เซ‡เชฒเชตเซเช‚:

git push heroku master

เชนเชตเซ‡ เชคเชฎเซ‡ เช†เชฆเซ‡เชถเซ‹ เชธเชพเชฅเซ‡ API เชธเซ‡เชตเชพ เช–เซ‹เชฒเซ€เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

heroku ps:scale web=1
heroku open
 

API เชชเชฐ เช‰เชชเชฒเชฌเซเชง เชฅเชถเซ‡ your-random-heroku-name.herokuapp.com/ai-quotes.

เชคเชฎเชพเชฐเชพ เชชเชพเชฏเชฅเซ‹เชจ API เชจเซ‡ RapidAPI เชฎเชพเชฐเซเช•เซ‡เชŸเชชเซเชฒเซ‡เชธเชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเซเช‚

เชเช•เชตเชพเชฐ API เชธเซ‡เชตเชพ Heroku เชชเชฐ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชˆ เชœเชพเชฏ, เชชเช›เซ€ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ Rapid API เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชนเซ€เช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เช† เชตเชฟเชทเชฏ เชชเชฐ.

1. RapidAPI เชเช•เชพเช‰เชจเซเชŸ เชฌเชจเชพเชตเซ‹.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เช…เชฎเซ‡ เชเช• เชฎเชซเชค เชเช•เชพเช‰เชจเซเชŸ เชฐเชœเซ€เชธเซเชŸเชฐ เช•เชฐเซ€เช เช›เซ€เช - เช† เชซเซ‡เชธเชฌเซเช•, เช—เซ‚เช—เชฒ, เช—เชฟเชŸเชนเชฌเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

2. เช•เช‚เชŸเซเชฐเซ‹เชฒ เชชเซ‡เชจเชฒเชฎเชพเช‚ API เช‰เชฎเซ‡เชฐเซ‹.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

3. เช†เช—เชณ, เชคเชฎเชพเชฐเชพ API เชตเชฟเชถเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฎเชพเชนเชฟเชคเซ€ เชฆเชพเช–เชฒ เช•เชฐเซ‹.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

4. "Add API" เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชเช• เชจเชตเซเช‚ เชชเซƒเชทเซเช  เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ เช…เชฎเชพเชฐเชพ API เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฆเชพเช–เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

5. เชนเชตเซ‡ เชคเชฎเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ API เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชฆเชพเช–เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชฅเชตเชพ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเซเชตเซ‡เช—เชฐ เชซเชพเช‡เชฒ OpenAPI เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เชธเชพเชฐเซเช‚, เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเซเชธ เชชเซƒเชทเซเช  เชชเชฐ เช…เชฎเชพเชฐเชพ API เชจเชพ เช…เช‚เชคเชฟเชฎ เชฌเชฟเช‚เชฆเซเช“ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เช‚เชคเชฟเชฎ เชฌเชฟเช‚เชฆเซเช“ CRUD (เชฎเซ‡เชณเชตเซ‹, เชชเซ‹เชธเซเชŸ เช•เชฐเซ‹, เชฎเซ‚เช•เซ‹, เช•เชพเชขเซ€ เชจเชพเช–เซ‹) เชจเชพ เช–เซเชฏเชพเชฒเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เช†เช—เชณ, เชคเชฎเชพเชฐเซ‡ เชเช• GET AI เช•เซเชตเซ‹เชŸ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เชฐเซ‡เชจเซเชกเชฎ เช•เซเชตเซ‹เชŸ (เชœเซ‹ ID เชกเชฟเชซเซ‹เชฒเซเชŸ เชนเซ‹เชฏ เชคเซ‹) เช…เชฅเชตเชพ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค ID เชฎเชพเชŸเซ‡ เช•เซเชตเซ‹เชŸ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡.

เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ "เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชฌเชจเชพเชตเซ‹" เชฌเชŸเชจเชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เช…เชฎเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช…เชจเซเชฏ เชคเชฎเชพเชฎ API เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชฎเชพเชŸเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเซ€เช เช›เซ€เช. เชฌเชธ เชเชŸเชฒเซเช‚ เชœ! เช…เชญเชฟเชจเช‚เชฆเชจ, เชคเชฎเซ‡ เชคเชฎเชพเชฐเซเช‚ API เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡!

เชœเซ‹ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เชšเชพเชฒเซ‡ เช›เซ‡, เชคเซ‹ API เชชเซƒเชทเซเช  เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชถเซ‡:

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ API เชฒเช–เชตเซเช‚ (เชซเซเชฒเชพเชธเซเช• เช…เชจเซ‡ RapidAPI เชธเชพเชฅเซ‡)

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เช…เชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ RESTful API เชธเซ‡เชตเชพ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชพเชฅเซ‡, Heroku เช•เซเชฒเชพเช‰เชก เชชเชฐ API เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ RapidAPI เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชฏเชพ.

เชชเชฐเช‚เชคเซ เชชเชฐเซ€เช•เซเชทเชฃ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚, API เชตเชฟเช•เชพเชธเชจเชพ เชซเช•เซเชค เชฎเซ‚เชณเชญเซ‚เชค เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹ เชฆเชฐเซเชถเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ - เชธเซเชฐเช•เซเชทเชพ, เช–เชพเชฎเซ€ เชธเชนเชฟเชทเซเชฃเซเชคเชพ เช…เชจเซ‡ เชฎเชพเชชเชจเซ€เชฏเชคเชพ เชœเซ‡เชตเซ€ เช˜เซ‹เช‚เช˜เชพเชŸ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจ เชนเชคเซ€.

เชตเชพเชธเซเชคเชตเชฟเช• API เชตเชฟเช•เชธเชพเชตเชคเซ€ เชตเช–เชคเซ‡, เช† เชฌเชงเซเช‚ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹