从$ http电话获取原始请求/响应

时间:2015-05-12 15:07:46

标签: angularjs

我正在编写一个AngularJs应用程序来测试我们开发的API。该应用程序使用$ http对象向API发出请求。其中一个要求是,在调用之后,可以查看原始HTTP(标题和正文)请求/响应,类似于Fiddler中通过Raw标签提供的内容。

$ http是开箱即用的吗?

如果没有,似乎唯一的挑战是获得对实际请求http标头的访问权限。获取响应头和请求/响应主体很容易,但不知道如何获取实际的请求头。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您使用$ http服务进行API调用,则可以使用拦截器来实现您的目标。

以下是文档告诉我们的内容:

  

出于全局错误处理,身份验证或任何类型的请求或响应后处理的同步或异步预处理的目的,希望能够在请求被传递到服务器之前拦截请求并在响应之前进行响应移交给发起这些请求的应用程序代码。拦截器利用promise API来满足同步和异步预处理的需求。

您可以在官方文档中找到更多深入解释。例如,here

此外,本网站还有一些关于拦截器的问题。有一些用于在应用程序中显示加载屏幕的示例:herehere,可能还有其他地方。

希望,这有帮助。

答案 1 :(得分:0)

是的,如果JQuery不存在并用Javascript编写,AngularJs包含在一些JQuery或内部JQlite中,它提供了一些预定义的服务。典型服务如下所示。

AngularJS docs: tutorial step 5

  

$前缀命名约定您可以创建自己的服务   事实上,我们将在第11步中做到这一点。作为命名惯例,   Angular的内置服务,Scope方法和其他一些Angular   API在名称前面有一个$前缀。

     

$前缀用于命名空间Angular提供的服务。至   防止冲突最好避免命名您的服务和模型   任何以$开头的东西。

     

如果您检查范围,您可能还会注意到一些属性开始   与$$。这些属性被认为是私有的,不应该是   访问或修改。

angular.module('myApp')
.factory('myService', function ($http, $injector) {
    'use strict';

    return $http.get('/endpoint')
        .then(function () {
            return $injector.get('endpoint');
        }
        .error(function () {
            // handle error
        }
    };
})

查看AngularJS docs中的图片,其中显示了许多带有$前缀的服务。大多数情况下,包装服务。这是保留的。更多信息FAQ