AngularJS loyihasi uchun API xizmatini tashkil qilish

Bizning loyihamizda taxminan 50 ta API nuqta bor. Bizning api dam olish uslubiga mos keladi. Misol uchun, bizda 4 usul bilan rasm api mavjud: GET, POST, DELETE va PUT.

Hozir men har bir so'nggi nuqta uchun 1 xizmatni yarataman. Har bir xizmatda APIni chaqirish usuli mavjud. Hozircha hech qanday test sinovlari yo'q. Bizning xizmatimizning namunasi:

export default function userApi(apiHelper, $http, $q) {
    let self = this;
    self.getUserData = getUserData;
    self.getPhoneCodes = getPhoneCodes;
    self.updateUser = updateUser;
   //Implementation below
}

Boshqa xizmat faqat shu uslubga amal qiladi. Biroq, men bu yondashuv juda ko'p xizmatlarni yaratadi deb qo'rqaman.

Do'stimim $ http xizmatini to'g'ridan-to'g'ri auditoriyada chaqirishimiz kerakligini taklif qiladi.

Sizningcha, bu yaxshiroqmi? Oldindan rahmat.

0

7 javoblar

Bu tekshiruvchining ichida $ http dan foydalanishni yaxshi bilmaydi. Ayniqsa sizning holatlaringizda turli xil API qo'ng'iroqlari mavjud.

Agar siz bog'langan API chaqiruvini o'z ichiga olgan bir nechta xizmatlardan foydalanayotgan bo'lsangiz UserService, ProductService, ... siz bitta faylda saqlangan barcha qo'ng'iroqlaringiz bo'ladi.

Keyinchalik kodni osongina biron-bir joyga qo'ng'iroq qilishingiz mumkin. Bir kun siz API-chaqiruvini o'zgartirishingiz kerak bo'lsa, chunki arkadagi tugma o'zgartirilsa, siz uni ishlatadigan har bir tekshiruvchiga emas, balki uni bir joyda (xizmat faylida) o'zgartirishingiz kerak bo'ladi

2
qo'shib qo'ydi

Bu tekshiruvchining ichida $ http dan foydalanishni yaxshi bilmaydi. Ayniqsa sizning holatlaringizda turli xil API qo'ng'iroqlari mavjud.

Agar siz bog'langan API chaqiruvini o'z ichiga olgan bir nechta xizmatlardan foydalanayotgan bo'lsangiz UserService, ProductService, ... siz bitta faylda saqlangan barcha qo'ng'iroqlaringiz bo'ladi.

Keyinchalik kodni osongina biron-bir joyga qo'ng'iroq qilishingiz mumkin. Bir kun siz API-chaqiruvini o'zgartirishingiz kerak bo'lsa, chunki arkadagi tugma o'zgartirilsa, siz uni ishlatadigan har bir tekshiruvchiga emas, balki uni bir joyda (xizmat faylida) o'zgartirishingiz kerak bo'ladi

2
qo'shib qo'ydi

Ideal sifatida $ http -ni tekshirgichlarda ishlatish yaxshi emas. Har qanday ish mantig'i factories/services ilovasida amalga oshirilishi kerak.

Quyida men o'z loyihalarimdan foydalanib, uni amalga oshirishim kerak.

RESTFul API xizmatiga qo'ng'iroq qilish uchun zavodni yaratdi

(function() {
    angular.module('myApp').factory('serviceFactory', function ($http) {
        var obj = {};
        var serviceUrl = "HOST URL/";
       //common service call
        obj.serviceCall = function (URL, method, reqParam) {
            var reqObject = {
                url: serviceUrl + URL,
                method: method || 'GET',
                data: reqParam,
                headers: {
                    'Content-Type': 'application/json'
                }
            };
            return $http(reqObject)
                .then(function success(success) {
                    return response.data;
                }, function err(error) {
                    alert("There was an error occured. Please try again after some time.");
                    return false;
                });
        }
        return obj;
    });
})();

Usage in Controller

serviceFactory
    .serviceCall(CONSTANTS.URL, 'GET', reqParams)
    .then(function(data) {
       //data is available
    });
1
qo'shib qo'ydi
Men bu usulni yoqtirmayman. Modeli chaqirganda, bu etarli emas, deb o'ylayman. ServiceFactory.serviceCall («/ users /», «Get», null) o'rniga UserService.getUsers() deyilgan kodni o'qish osonroq deb o'ylayman
qo'shib qo'ydi muallif Weedoze, manba
@Weedoze Men sizning fikringizga qo'shilaman, ammo agar bizda ko'proq xizmat ko'rsatish qo'ng'iroqlari yoki tugatish nuqtalari mavjud bo'lsa, kodni tashkil qilish qiyin emas. Shuning uchun yuqoridagi usuldan foydalanishni afzal ko'raman :)
qo'shib qo'ydi muallif Gangadhar Jannu, manba
Jamoadagi hamkasbim shu kabi qo'llanishni ham qo'llamoqda :)
qo'shib qo'ydi muallif DavidTran, manba

Ideal sifatida $ http -ni tekshirgichlarda ishlatish yaxshi emas. Har qanday ish mantig'i factories/services ilovasida amalga oshirilishi kerak.

Quyida men o'z loyihalarimdan foydalanib, uni amalga oshirishim kerak.

RESTFul API xizmatiga qo'ng'iroq qilish uchun zavodni yaratdi

(function() {
    angular.module('myApp').factory('serviceFactory', function ($http) {
        var obj = {};
        var serviceUrl = "HOST URL/";
       //common service call
        obj.serviceCall = function (URL, method, reqParam) {
            var reqObject = {
                url: serviceUrl + URL,
                method: method || 'GET',
                data: reqParam,
                headers: {
                    'Content-Type': 'application/json'
                }
            };
            return $http(reqObject)
                .then(function success(success) {
                    return response.data;
                }, function err(error) {
                    alert("There was an error occured. Please try again after some time.");
                    return false;
                });
        }
        return obj;
    });
})();

Usage in Controller

serviceFactory
    .serviceCall(CONSTANTS.URL, 'GET', reqParams)
    .then(function(data) {
       //data is available
    });
1
qo'shib qo'ydi
Men bu usulni yoqtirmayman. Modeli chaqirganda, bu etarli emas, deb o'ylayman. ServiceFactory.serviceCall («/ users /», «Get», null) o'rniga UserService.getUsers() deyilgan kodni o'qish osonroq deb o'ylayman
qo'shib qo'ydi muallif Weedoze, manba
@Weedoze Men sizning fikringizga qo'shilaman, ammo agar bizda ko'proq xizmat ko'rsatish qo'ng'iroqlari yoki tugatish nuqtalari mavjud bo'lsa, kodni tashkil qilish qiyin emas. Shuning uchun yuqoridagi usuldan foydalanishni afzal ko'raman :)
qo'shib qo'ydi muallif Gangadhar Jannu, manba
Jamoadagi hamkasbim shu kabi qo'llanishni ham qo'llamoqda :)
qo'shib qo'ydi muallif DavidTran, manba

Weedoze'ga butunlay $ http ga sizning kontrolörünüzü qo'ymasligingiz kerak. Shunday qilib, 50 ta so'nggi nuqta, har biri 1-4 fe'lli, server tomonining ko'p funktsiyasi. Amalda aytganda, ko'p funktsiyalarni to'g'ridan-to'g'ri boshqaruvchidan boshqarishni xohlaysiz. Va siz haqsiz, bu har bir so'nggi nuqta uchun xizmat qilgan bo'lsangiz, bu burchak xizmatlarining bir tonna bo'lishi mumkin.

Xizmatda muvofiqlashtirilgan funktsiyalarni guruhlashni o'ylab ko'ring, u ham muvofiqlashtirish funktsiyalarini o'z ichiga olishi mumkin. Misol uchun, foydalanuvchi xizmatingiz sizni boshqarishi mumkin (va men ba'zi soxta so'nggi fikrlar qilyapman):

Foydalanuvchi Endpoint, Kirish ma'lumotlarini yakunlash

Va foydalanuvchini kiritadigan va shu foydalanuvchining profilini qaytaradigan funksiya bo'lishi mumkin (masalan).

0
qo'shib qo'ydi

Avvalo, "juda ko'p xizmatlar" kabi narsalar yo'q.

Yapabileceğiniz eng yaxshi narsa, ish mantig'ini va API'lerinizi denetleyicilerinizden uzoq tutishdir.

Agar tekshirgichingizdagi $ http xizmatidan foydalanishni boshlasangiz, siz o'zingizning teshik dasturingizda o'zingizni takrorlaysiz.

Men sizning brauzeringizda REST yondashuvini kuzatayotgan bo'lsangiz, burchak-resurs ( Bog'lanish ).

Ushbu kutubxona sizga manba xizmatining ( POST saqlash, O'chirish yo'q qilish, so'rovlar GET to'plamini, GET bir ob'ektni oling) va u ham kengaytirilishi mumkin.

0
qo'shib qo'ydi

Avvalo, "juda ko'p xizmatlar" kabi narsalar yo'q.

Yapabileceğiniz eng yaxshi narsa, ish mantig'ini va API'lerinizi denetleyicilerinizden uzoq tutishdir.

Agar tekshirgichingizdagi $ http xizmatidan foydalanishni boshlasangiz, siz o'zingizning teshik dasturingizda o'zingizni takrorlaysiz.

Men sizning brauzeringizda REST yondashuvini kuzatayotgan bo'lsangiz, burchak-resurs ( Bog'lanish ).

Ushbu kutubxona sizga manba xizmatining ( POST saqlash, O'chirish yo'q qilish, so'rovlar GET to'plamini, GET bir ob'ektni oling) va u ham kengaytirilishi mumkin.

0
qo'shib qo'ydi
Angular Uzbekistan
Angular Uzbekistan
107 ishtirokchilar

Guruh Angular bo'yicha muloqot qilish uchun ochilgan Sizni qiziqtirsa: @nodejs_uz @react_uz @angular_uz @yiiframework_uz @js_uzb @typescript_uzb @vuejs_uz @ngTashkent @laravel_uz @uzdevgroup Ish o'rinlari @UzDev_jobs

ngTashkent
ngTashkent
77 ishtirokchilar

Правила просты: 1. Не хамить 2. Не хейтить 3. Реакт не нужен Ссылки: https://t.me/angular_ru - старший брат https://t.me/angular_uz - ангулар на узбекском @js_uzb @vuejs_uz @react_uz @nodejs_uz @yiiframework_uz @uzdevgroup @UzDev_Jobs @tasdev_talks