Изградња РЕСТ АПИ-ја је често механички задатак, који укључује много шаблонског дизајна и програмирања напамет. Срећом, алати као што је ФастАПИ могу ослободити много досадних детаља.
Користећи ФастАПИ, можете брзо да направите ефикасан, комплетан РЕСТ АПИ за вашу ЦРУД апликацију. Са МонгоДБ као извором података, овај водич ће вас упутити ка постављању сопственог АПИ-ја за кратко време.
Шта је ФастАПИ?
ФастАПИ је брз Питхон веб оквир отвореног кода за прављење АПИ-ја. Пружа уграђену подршку за асинхроне захтеве, аутоматску валидацију података и аутоматску документацију крајњих тачака АПИ-ја.
Предности ФастАПИ-а у односу на друге Питхон оквире
- ФастАПИ је релативно бржи од других оквира као што су Дјанго и Фласк. То је зато што се ФастАПИ надограђује на асинцио, асинхрони И/О библиотеку за Питхон која може брже да обрађује истовремене захтеве.
- ФастАПИ пружа чист и једноставан начин за прављење АПИ-ја уз минималан напор јер захтева мање кода него Фласк или Дјанго.
- Коначно, ФастАПИ олакшава генерисање документације за крајње тачке. Користи Сваггер за израду документације коју можете користити за тестирање крајњих тачака покретањем захтева и прегледом одговора.
Подесите МонгоДБ базу података
Да бисте започели, мораћете подесите МонгоДБ базу података локално. Алтернативно, можете се одлучити за лакшу опцију постављање МонгоДБ кластера у облаку.
Затим, користећи инсталирани МонгоДБ алат за графички кориснички интерфејс, Цомпасс, креирајте везу са базом података. Кликните Нова веза и обезбедите УРИ везе за успостављање везе са МонгоДБ сервером који ради локално.
Коначно, направите нову базу података и колекцију за чување ваших тест АПИ података.
Подесите ФастАПИ сервер
Користећи терминал, креирајте фасциклу пројекта и унесите тај нови директоријум.
Код овог пројекта можете пронаћи у њему ГитХуб спремиште.
Затим проверите да ли користите Питхон верзију 3.6+. Ако не, инсталирајте најновију Питхон верзија.
питхон --версион
Након тога, инсталирајте Виртуаленв да бисте креирали изоловано виртуелно развојно окружење. Ово је веома препоручљиво јер вам омогућава да избегнете конфликте, посебно ако користите различите верзије пакета за различите пројекте.
пип инсталл виртуаленв
Затим креирајте виртуелно окружење под називом "венв" у вашем тренутном директоријуму:
виртуаленв венв
На крају, активирајте виртуелно окружење.
# На Уник-у или МацОС-у:
извор венв/бин/активирај
# На Виндовс-у:
.\венв\Сцриптс\ацтивате
Када конфигуришете виртуелно окружење, инсталирајте ФастАПИ, ПиМонго и Увицорн пакете.
пип инсталл фастапи пимонго увицорн
ПиМонго је библиотека заснована на Питхон-у за рад са МонгоДБ базом података. Пружа АПИ који подржава све карактеристике МонгоДБ-а и омогућава вам интеракцију са МонгоДБ-ом без потребе да пишете сирове МонгоДБ упите.
Увицорн је, с друге стране, асинхрони веб сервер заснован на Питхон асинцио модулу. Његова главна карактеристика је поновно учитавање ваших ФастАПИ сервера у покрету. Коришћење Увицорн-а је слично радећи са Нодемоном.
Креирајте ФастАПИ сервер
Коначно, направите једноставан ФастАПИ сервер који слуша захтеве који долазе са кућне руте. У основном директоријуму фасцикле вашег пројекта креирајте сервер.пи датотеку и додајте код испод.
из фастапи увоз ФастАПИ
апликација = ФастАПИ()
@апп.гет("/")
асинцдефкућа():
повратак {"порука": "Здраво Свете"}
На крају, покрените наредбу испод да бисте покренули развојни сервер. Увицорн ће послужити вашу апликацију на порту 8000.
увицон сервер: апп --релоад
Само напред и погледајте одговор сервера у свом претраживачу на http://localhost: 8000.
Креирајте РЕСТ АПИ помоћу ЦРУД операција
Сада направите РЕСТ АПИ који имплементира ЦРУД методе (креирање, читање, ажурирање и брисање). У основном директоријуму фасцикле вашег пројекта креирајте четири фасцикле: конфигурација, модели, руте и шеме.
├── конфиг
├── модели
├── руте
├── шеме
└── сервер.пи
1. Конфигуришите везу са базом података
У директоријуму конфигурације, направите нову датотеку, дб.пи, и додајте код испод.
из пимонго увоз МонгоЦлиент
дб_цоннецтион = МонгоЦлиент("монгодб://лоцалхост: 27017")
дб = дб_цоннецтион.датабасе_наме
збирка = дб["назив_колекције"]
- Користите метод МонгоЦлиент() да бисте креирали везу са МонгоДБ базом података. Узима низ УРИ везе као аргумент који специфицира хост и порт МонгоДБ сервера.
- Две варијабле одређују којој бази података и колекцији на вашем МонгоДБ серверу сервер треба да приступи.
2. Дефинишите модел података
Овај модел ће дефинисати структуру ваших података у бази података укључујући поља и типове података.
У директоријуму модела направите нову датотеку, усер_модел.пи, и додајте код испод.
из пидантиц увоз БасеМодел
класаКорисник(Основни модел):
назив: стр
улога: стр
- Горњи код креира класу под називом Усер, која је поткласа класе БасеМодел из Пидантиц библиотеке. Класа Усер има два поља, име и улогу са њиховим типовима података постављеним на стрингове.
- Можете користити Пидантиц библиотеку са ФастАПИ за креирање модела података. Такође можете да га користите за валидацију података, серијализацију (ЈСОН у Питхон) и де-сериализацију (Питхон у ЈСОН).
3. Дефинишите шему података
Из креираног модела података можете дефинисати шему за своје податке. У директоријуму шема направите нову датотеку: усер_сцхема.пи и додајте код испод.
дефусер_сериализатор(корисник) -> дицт:
повратак {
'ид':стр (корисник["_ид"]),
'име':усер["име"],
'улога':усер["улога"]
}
дефусерс_сериализатор(корисници) -> листа:
повратак [усер_сериализер (корисник) за корисник ин корисници]
4. Дефинишите АПИ руте
Коначно, дефинишите руте за различите ЦРУД операције.
У директоријуму рута направите нову датотеку: усер_роутес.пи и додајте код испод.
Додајте податке помоћу методе објаве
Креирајте руту поста да бисте додали податке.
из фастапи увоз АПИРоутер
из модели.усер_модел увоз Корисник
из сцхемас.усер_сцхема увоз усерс_сериализатор
из бсон увоз ОбјецтИд
из цонфиг.дб увоз збиркакорисник = АПИРоутер()
@усер.пост("/")
асинцдефнаправи корисника(корисник: корисник):
_ид = цоллецтион.инсерт_оне (дицт (корисник))
корисник = усерс_сериализатор (цоллецтион.финд({"_ид": _ид.инсертед_ид}))
повратак {"статус": "Ок","подаци": корисник}
- ФастАПИ обезбеђује АПИРоутер() метод који дефинише објекат рутера који обезбеђује интерфејс за упућивање АПИ захтева серверу.
- Наведите руту поста која креира нови кориснички објекат у бази података уметањем података у колекцију након серијализације. Затим сачувајте и проследите инсертед_ид да бисте пронашли придружене податке у колекцији и на крају вратите статус „У реду“ са подацима у одговору, ако је захтев за објављивање успешан.
- Методе инсерт_оне и финд дефинише ПиМонго клијент.
Сада додајте код испод у сервер.пи да бисте иницијализовали руте.
из роутес.усер_роутес увоз корисник
апп.инцлуде_роутер (корисник)
Само напред и тестирајте руту поста у свом претраживачу користећи Сваггер УИ АПИ алат који обезбеђује ФастАПИ.
Читање података помоћу Гет методе
Након дефинисања руте поста и иницијализације рута, дефинишите остале друге руте.
@усер.гет("/")
асинцдеффинд_алл_усерс():
корисници = усерс_сериализатор (цоллецтион.финд())
повратак {"статус": "Ок","подаци": корисници}
@усер.гет("/{ид}")
асинцдефгет_оне_усер(ид: стр):
корисник = усерс_сериализатор (цоллецтион.финд({"_ид": ОбјецтИд (ид)}))
повратак {"статус": "Ок","подаци": корисник}
Дефинишите две руте за добијање које преузимају све податке у колекцији и преузимају одређене податке из колекције на основу ИД-а.
Ажурирајте податке методом Пут
Креирајте пут пут да бисте ажурирали ускладиштене податке у бази података.
@усер.пут("/{ид}")
асинцдефупдате_усер(ид: стр, корисник: корисник):
цоллецтион.финд_оне_анд_упдате(
{
"_ид": ОбјецтИд (ид)
},
{
"$сет": дицт (корисник)
})
корисник = усерс_сериализатор (цоллецтион.финд({"_ид": ОбјецтИд (ид)}))
повратак {"статус": "Ок","подаци": корисник}
Метод пут користи ИД да пронађе одређене податке у колекцији и ажурира вредност поља у документу новим подацима пренетим из АПИ-ја. Затим можете потражити ажуриране податке према ИД-у и вратити их у АПИ одговору.
Избришите податке помоћу методе Делете
Креирајте руту за брисање да бисте избрисали сачуване податке у бази података.
@усер.делете("/{ид}")
асинцдефделете_усер(ид: стр):
цоллецтион.финд_оне_анд_делете({"_ид": ОбјецтИд (ид)})
корисници = усерс_сериализатор (цоллецтион.финд())
повратак {"статус": "Ок","подаци": []}
Рута за брисање узима ИД одређеног документа који желите да избришете из колекције.
Креирајте РЕСТ АПИ-је помоћу ФастАПИ-ја
ФастАПИ пружа одличан начин за практичну изградњу позадинских Питхон веб АПИ-ја. Његови уграђени алати за интеграцију базе података и аутоматска производња АПИ-ја чине процес једноставним.
Можете чак и да направите корак даље и направите потпуно развијене апликације. Покушајте да интегришете фронт-енд клијент користећи популарне технологије као што су Реацт, Ангулар или Вуе.