Акроним РЕСТ је скраћеница за РЕпресентатионал Стате Трансфер, док АПИ је скраћеница за Апплицатион Программинг Интерфаце. Заједно се односе на РЕСТ АПИ. РЕСТ АПИ је услуга која преноси захтеве и одговоре између два софтверска система, на РЕСТ архитектури.
РЕСТ архитектура гради веб сервисе који су доступни преко УРЛ-ова користећи један од четири глагола захтева: ПОСТ, ГЕТ, ПУТ и ДЕЛЕТЕ. Дакле, можете рећи да је РЕСТ АПИ софтвер који вам омогућава да креирате, читате, ажурирате и бришете ресурсе путем УРЛ-ова.
Можете научити како да креирате РЕСТ АПИ користећи Спринг Боот.
Иницијализација Спринг Боот апликације
Прва ствар коју треба да урадите је упознајте се са основама пролећа и подесите Спринг Боот апликацију. Међутим, мораћете да промените зависности. Поред зависности од веба, мораћете да добијете зависност Спринг Дата Јава Персистент АПИ (ЈПА) и драјвер за базу података коју намеравате да користите (ова апликација ће користити МиСКЛ).
За овај РЕСТ АПИ биће вам потребан контролер, модел и спремиште. Дакле, РЕСТ АПИ ће имати следећу структуру датотеке:
Креирање модела
Прва класа коју ћете морати да креирате је модел купца, који чува логику података.
пакет цом.онлинесхопахолицс.апи.модел;
увоз јакарта.персистенце. Цолумн;
увоз јакарта.персистенце. Ентитет;
увоз јакарта.персистенце. ГенератедВалуе;
увоз јакарта.персистенце. ГенератионТипе;
увоз јакарта.персистенце. Ид;
увоз јакарта.персистенце. Сто;@Сто(име="муштерија")
@Ентити
јавностикласаЦустомер{
@Ид
@ГенератедВалуе(стратегија = ГенератионТипе. АУТО)
приватни Интегер ид;@Цолумн(име="Име клијента")
приватни Стринг наме;приватни Стринг емаил;
јавности Интегер гетИд(){
повратак ид;
}јавностипразнинасетИд(Цјелобројни ИД){
ово.ид = ид;
}јавности Низ гетНаме(){
повратак име;
}јавностипразнинасетНаме(име стринга){
ово.наме = име;
}јавности Низ гетЕмаил(){
повратак емаил;
}
јавностипразнинасетЕмаил(Стринг емаил){
ово.емаил = емаил;
}
}
Из класе клијената изнад, видећете да ће сваки клијент имати ИД, име и е-пошту. Такође ћете приметити неколико напомена које служе различитим сврхама.
- @Ентити: Декларише класу клијента као ЈПА ентитет. То значи да ће ЈПА користити поља у класи за креирање колона у релационој бази података.
- @Табела: Одређује име табеле која ће се мапирати у класу модела корисника.
- @Ид: Одређује својство које ће јединствено идентификовати ентитет у бази података.
- @ГенератедВалуе и @ГенератионТипе: Они раде заједно како би специфицирали стратегију аутоматског генерисања за поље са којим се повезује. Дакле, поље ид ће аутоматски генерисати јединствену вредност сваки пут када креирате новог клијента.
- @Цолумн: Одређује својство које се пресликава на колону у бази података. Дакле, својство наме ће се мапирати у колону имена купца у бази података.
Креирање репозиторијума
Ово спремиште ће вам омогућити интеракцију са подацима о клијентима у бази података.
пакет цом.онлинесхопахолицс.апи.репоситори;увоз орг.спрингфрамеворк.дата.репоситори. ЦрудРепоситори;
увоз цом.онлинесхопахолицс.апи.модел. Купац;
јавностиинтерфејсЦустомерРепоситорипротежеЦрудРепоситори<Цустомер, Интегер>{}
Репозиторијум корисника се проширује Спринг’с ЦрудРепоситои интерфејс, прослеђујући му класу модела Цустомер заједно са типом јединственог идентификатора за ентитет, Интегер.
Интерфејс ЦрудРепоситори пружа приступ преко 10 операција, укључујући генеричке ЦРУД методе које су вам потребне за РЕСТ АПИ. Дакле, пошто ЦрудРепоситори већ дефинише методе које ће вам требати, нема потребе да их експлицитно декларирате у интерфејсу ЦустомерРепоситори.
Креирање контролера
Контролер вам омогућава да ажурирате податке у вашој бази података користећи модел и спремиште.
пакет цом.онлинесхопахолицс.апи.цонтроллер;увоз јава.утил. Опционо;
увоз орг.спрингфрамеворк.беанс.фацтори.аннотатион. Аутовиред;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. ДелетеМаппинг;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. ГетМаппинг;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. ПатхВариабле;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. ПостМаппинг;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. ПутМаппинг;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. РекуестБоди;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. РекуестМаппинг;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. РекуестПарам;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. РеспонсеБоди;
увоз орг.спрингфрамеворк.веб.бинд.аннотатион. РестЦонтроллер;
увоз цом.онлинесхопахолицс.апи.модел. Купац;
увоз цом.онлинесхопахолицс.апи.репоситори. ЦустомерРепоситори;
@РестЦонтроллер
@РекуестМаппинг("/купци")
јавностикласаЦустомерЦонтроллер{
@Аутовиред
приватни ЦустомерРепоситори цустомерРепоситори;
// креирање новог купца
@ПостМаппинг("/додати")
јавности Цустомер аддНевЦустомер(@РекуестБоди Цустомер невЦустомер){
Корисник корисника = Нова Цустомер();
усер.сетНаме (невЦустомер.гетНаме());
усер.сетЕмаил (невЦустомер.гетЕмаил());
цустомерРепоситори.саве (корисник);
повратак корисник;
}
// види све купце
@ГетМаппинг("погледати све")
јавности@РеспонсеБодиИтераблегетАллЦустомерс() {
повратак цустомерРепоситори.финдАлл();
}
// види одређеног купца
@ГетМаппинг("виев/{ид}")
јавности ОпционогетЦустомер(@ПатхВариабле Интегер ИД) {
повратак цустомерРепоситори.финдБиИд (ид);
}
// ажурирање постојећег купца
@ПутМаппинг("/едит/{ид}")
јавности Низ ажурирање( @РекуестБоди Цустомер упдатеЦустомер, @ПатхВариабле Интегер ид){
повратак цустомерРепоситори.финдБиИд (ид)
.мап (купац -> {
цустомер.сетНаме (упдатеЦустомер.гетНаме());
цустомер.сетЕмаил (упдатеЦустомер.гетЕмаил());
цустомерРепоситори.саве (купац);
повратак„Подаци о клијентима су успешно ажурирани!“;
}).орЕлсеГет(() -> {
повратак„Овај купац не постоји“;
});
}
// избрисати купца
@ДелетеМаппинг("избриши/{ид}")
јавности Низ избрисати(@ПатхВариабле("ид")цео број) {
цустомерРепоситори.делетеБиИд (ид);
повратак„Клијент је успешно обрисан!“;
}
}
Контролер изнад опрема РЕСТ АПИ са ЦРУД операцијама, користећи пет ЦрудРепоситори-а
- @РестЦонтроллер: Ова напомена има две сврхе. Означава класу за откривање скенирањем компоненти. Такође говори Спрингу да запише повратну вредност за све методе, у овој класи, у телу одговора.
- @РекуестМаппинг: Дефинише основни образац захтева који ће контролор руковати. Дакле, овај контролер ће обрадити све захтеве ка „/цустомерс“.
- @РеспонсеБоди: Омогућава методу да врати цео ентитет.
- @РекуестБоди: Омогућава вам да конвертујете тело захтева у објекат.
- @РекуестПарам: Омогућава вам да изолујете једно својство од објекта.
- @ПатхВариабле: Омогућава вам да мапирате вредност захтева у чувар места. Он мапира ИД који је дат методи делете са постојећом вредношћу у бази података.
- @ПостМаппинг: Омогућава вам да креирате ресурсе.
- @ГетМаппинг: Омогућава вам читање података о ресурсима.
- @ПутМаппинг: Омогућава вам да ажурирате ресурсе.
- @ДелетеМаппинг: Омогућава вам да избришете ресурсе.
Повезивање базе података са вашом апликацијом
Да бисте повезали базу података са било којом Спринг апликацијом, мораћете да користите апликација.особине датотеку у фасцикли ресурса. Ова датотека је у почетку празна, тако да је можете попунити одговарајућим својствима за базу података коју намеравате да користите. Ова апликација ће користити МиСКЛ базу података тако да ће датотека апплицатион.пропертиес садржати следеће податке:
спринг.јпа.хибернате.ддл-ауто=упдате
спринг.јпа.опен-ин-виев=фалсе
спринг.датасоурце.урл=јдбц: мискл://${МИСКЛ_ХОСТ: лоцалхост}:3306/онлинесхопахолицс
спринг.датасоурце.усернаме=роот
спринг.датасоурце.пассворд=сецурепв
спринг.датасоурце.дривер-цласс-наме=цом.мискл.цј.јдбц. Возач
Горе наведени подаци показују да ће се ова апликација повезивати на МиСКЛ базу података под називом онлинесхопахолицс, са „роот“ корисничким именом и „сецурепв“ као лозинком. Ваш следећи корак је креирање базе података и табеле купаца у МиСКЛ-у.
Креирање захтева
Постоји много алата које можете користити да тестирате свој РЕСТ АПИ. Постман је популаран алат за тестирање РЕСТ АПИ-ја, и можете га користити за тестирање једноставног АПИ-ја који сте направили. Након креирања МиСКЛ табеле и покретања Спринг апликације, можете покренути Постман и експериментисати са четири глагола захтева.
ПОСТ Рекуест
Овај захтев ће вам омогућити да креирате нове клијенте користећи РЕСТ АПИ. Да бисте довршили овај захтев, мораћете да одете у одељак заглавља вашег захтева за објављивање и направите ново заглавље (Тип садржаја). Требало би да подесите вредност овог заглавља на апплицатион/јсон, јер ћете креирати нове клијенте користећи ЈСОН.
У телу захтева, мораћете да промените тип у необрађен и убаците свој ЈСОН. Затим ћете морати да унесете УРЛ адресу:
Слање захтева ће вратити следећи одговор:
Можете видети да је захтев био успешан, а нови купац такође има ИД.
ГЕТ Рекуест
Сада када имате клијента, можете га видети помоћу захтева за добијање који враћа све купце:
Или сваки купац по ИД-у:
ПУТ Рекуест
Можете ажурирати Јанет новим презименом и имејлом.
Захтев за ДЕЛЕТЕ
Такође можете избрисати Џенет из базе података.
Тестирајте свој Спринг РЕСТ АПИ користећи ЈУнит
Са Спринг Боот-ом, можете тестирати било коју апликацију (укључујући РЕСТ АПИ-је) користећи Спринг тест датотеку. Тестирање софтвера је важно за Спринг Боот. Свака иницијализована Спринг апликација користи ЈУнит за тестирање и омогућава вам да шаљете захтеве вашим РЕСТ АПИ-јима.