在一次api通话中执行3项任务

时间:2018-05-06 20:06:40

标签: javascript python angularjs django

我目前来自客户的api呼叫流程如下:

  1. 将数据发送到品牌端点,检索最近插入的ID,分配给userData.brand
  2. 将数据发送到用户端点,检索最近插入的ID,分配给userData.user
  3. 将两个值发送到userBrand端点
  4. 这似乎是一个代价高昂的过程,所以我想将所有请求合并为一个,但我不确定如何从服务器端处理它。我知道我可以使用一个端点,但我不知道如何对一个端点使用所有序列化器/视图。

    所以在客户端,这就是我所拥有的:

    brand.js

      AdsomaService.registerUser(vm.userData).then(function(data) {
        vm.successMessage = data.message;
        vm.userBrandData.user = data.id;
      }, function error(data) {
        $log.info(data);
        vm.errorMessage = data;
        errorCount++;
      });          
    
      AdsomaService.registerUserBrand(vm.userBrandData).then(function(data) {
        vm.successMessage = data.message;
      }, function error(data) {
        $log.info(data);
        vm.errorMessage = data;
        errorCount++;
      });   
    
      if(errorCount > 0) {
        vm.message = vm.errorMessage;
        angular.element('#errorMessage').appendTo('body').modal('show');
      } else if(errorCount === 0) {
        vm.message = vm.successMessage;
        angular.element('#successMessage').appendTo('body').modal('show');
      }
    

    adsoma.js

    function registerUser(userData) {
      var url = envService.read('apiUrl') + '/user_signup/';
      var dataJSON = {
        email: userData.email,
        password: userData.password,
        account_type: userData.accountType
      };
      var req = {
        method: 'POST',
        url: url,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        data: $httpParamSerializerJQLike(dataJSON)
      };
      return ($http(req).then(handleSuccess, handleError));
    }
    
    function registerBrand(brandData) {
      var url = envService.read('apiUrl') + '/brand_signup/';
      var dataJSON = {
        name: brandData.name,
        brand: brandData.name,
        email: brandData.email,
        phone: brandData.phone,
        website: brandData.website
      };
      var req = {
        method: 'POST',
        url: url,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        data: $httpParamSerializerJQLike(dataJSON)
      };
      return ($http(req).then(handleSuccess, handleError));
    }
    
    function registerUserBrand(userData) {
      var url = envService.read('apiUrl') + '/user_brand_signup/';
        var dataJSON = {
        user: userData.user,
        brand: userData.brand
      };
      $log.info(dataJSON);
      var req = {
        method: 'POST',
        url: url,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        data: $httpParamSerializerJQLike(dataJSON)
      };
      return ($http(req).then(handleSuccess, handleError));
    }
    

    在服务器端,这就是我所拥有的:

    views.py

    此处代码:https://pastebin.com/P5ih75An

    serialisers.py

    此处代码:https://pastebin.com/2zDgZDLc

0 个答案:

没有答案