一尘不染

AngularJS全局修改$ http中每个请求的URL

angularjs

让我们建立一个简单的例子:

$scope.whatDoesTheFoxSay = function(){
    $http.post("/backend/ancientMystery", {
...

我如何全局转换发送请求的URL?本质上,我想为每个http请求添加一个URL。

我尝试过的是$rootScope在应用程序启动时在包含URL的位置设置变量。但这不是我想要我的代码看起来像的样子:

$scope.whatDoesTheFoxSay = function(){
    $http.post($rootScope.backendUrl + "/backend/hidingDeepInTheWoods", {
...

我是否应该考虑研究是否正确$httpProvider.defaults.transformRequest?谁能给我一些基本的示例代码?


阅读 572

收藏
2020-07-04

共1个答案

一尘不染

我有另一种使用带有$ http的请求拦截器的方法,它将在一个公共位置处理所有url。

<!doctype html>
<html ng-app="test">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>

  </head>
 <body ng-controller="test" >


<!-- tabs -->


 <script>
     var app = angular.module('test', []);
     app.config(function ($httpProvider) {
         $httpProvider.interceptors.push(function ($q) {
             return {
                 'request': function (config) {
                     config.url = config.url + '?id=123';
                     return config || $q.when(config);

                 }

             }
         });
     });

     app.controller('test', function ($scope,$http) {
         $http.get('Response.txt').success(function (data) { alert(data) }).error(function (fail) {

         });
     });

   </script>
</body>


</html>
2020-07-04