2015-05-12 4 views
1

Я пишу приложение AngularJs для тестирования API, который мы разработали. Приложение использует объект $ http для запросов в API. Одна из запросов заключается в том, что после вызова можно просмотреть запрос HTTP/заголовки и тела HTTP (заголовки и тела), аналогично тому, что доступно в Fiddler через вкладки Raw.

Это что-то, что $ http предоставляет из коробки?

Если нет, представляется, что единственная проблема - получить доступ к фактическим запросам HTTP . Легко получить заголовки ответов и органы запроса/ответа, но не уверен, как получить фактические заголовки запросов.

Спасибо.

+0

В этом случае вопрос заключается в том, как получить ВСЕ HTTP-заголовки, отправленные объектом $ http в запросе. Все заголовки ответов легко доступны, но вопрос о том, как получить фактические заголовки запросов, по-прежнему остается вопросом. Благодарю. – user1044169

+0

из документов и нескольких попыток, похоже, невозможно получить ВСЕ HTTP-заголовки, отправленные браузером. Все: перехватчик, запрос-трансформатор и объект конфигурации ответа показывают только те заголовки, которые были установлены самой библиотекой. Возможно ли, что браузер добавляет некоторые заголовки самостоятельно, независимо от того, что они были добавлены библиотекой или нет? Однако, возможно, можно найти что-то в источниках или, возможно, заменить службу $ http другим инструментом, который предоставляет такую ​​информацию. – DWand

+0

$ http-сервис может быть протестирован с помощью $ httpBackend. $ httpBackend предоставляет возможность указать, какие заголовки вы ожидаете от запроса. Однако я не знаю, работает ли он со всеми заголовками или только с заголовками, установленными библиотекой. – DWand

ответ

0

Если вы используете службу $ http для совершения вызовов API, вы можете использовать Interceptors для достижения желаемого.

Вот что документы говорят нам о них:

Для целей глобальной обработки ошибок, аутентификации или любого вида синхронной или асинхронной предварительной обработки запроса или постобработки ответов, желательно, чтобы быть способные перехватывать запросы до того, как они будут переданы серверу, и ответы до того, как они будут переданы в код приложения, инициировавшего эти запросы. Перехватчики используют обещающие API для удовлетворения этой потребности как для синхронной, так и для асинхронной предварительной обработки.

Более подробное описание вы можете найти в официальных документах. Например, here.

Также есть некоторые вопросы о перехватчиках на этом сайте. Есть несколько примеров их использования для отображения экрана загрузки в приложениях: here, here и, возможно, в другом месте.

Надеюсь, это поможет.

0

Да, AngularJs обернута вокруг некоторых JQuery или внутренне JQlite если JQuery нет и написано в Javascript и предоставляет некоторые заранее определенные услуги. Типичная услуга выглядит следующим образом.

AngularJS docs: tutorial step 5

$ Приставка Naming Convention Вы можете создавать свои собственные услуги, и в самом деле мы будем делать то, что на этапе 11. В именовании, угловые встроенные в услуги, методы Scope и несколько других Angular API имеют префикс $ перед именем.

Префикс $ существует в пространстве имен услуг с угловым сервисом. До предотвращать конфликты лучше избегать именования ваших услуг и моделей всего, что начинается с $.

Если вы осмотрите область действия, вы также можете заметить некоторые свойства, которые начинаются с с помощью $$. Эти свойства считаются закрытыми и не должны быть доступными или модифицированными .

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.

Смежные вопросы