Подтвердить что ты не робот

Как использовать/импортировать модуль http?

Я играл с Angular 2 Quickstart.

Как я могу использовать/импортировать модуль http в Angular 2?

Я посмотрел Angular 2 Todo's.js, но он не использует модуль http.

Я добавил "ngHttp": "angular/http", к dependencies в package.json потому что слышал, что Angular 2 несколько модульный.

4b9b3361

Ответ 1

В версии 37 вам нужно сделать следующее:

///<reference path="typings/angular2/http.d.ts"/>    
import {Http} from "angular2/http";

И запустите эту команду tsd:

tsd install angular2/http

Ответ 2

Последнее обновление: 11 мая 2016 года
Angular версия: 2.0.0-rc.2
Typescript версия: 1.8.10

Живой рабочий пример.

Простой пример использования модуля Http с Observable:

import {bootstrap} from '@angular2/platform-browser-dynamic';
import {Component, enableProdMode, Injectable, OnInit} from '@angular/core';
import {Http, Headers, HTTP_PROVIDERS, URLSearchParams} from '@angular/http';
import 'rxjs/add/operator/map';

const API_KEY = '6c759d320ea37acf99ec363f678f73c0:14:74192489';

@Injectable()
class ArticleApi {
  constructor(private http: Http) {}
  
  seachArticle(query) {
    const endpoint = 'http://api.nytimes.com/svc/search/v2/articlesearch.json';
    const searchParams = new URLSearchParams()
    searchParams.set('api-key', API_KEY);
    searchParams.set('q', query);
    
    return this.http
      .get(endpoint, {search: searchParams})
      .map(res => res.json().response.docs);
  }
  
  postExample(someData) {
    const endpoint = 'https://your-endpoint';
    const headers = new Headers({'Content-Type': 'application/json'});
    
    return this.http
      .post(endpoint, JSON.stringify(someData), { headers: headers })
      .map(res => res.json());
  }
}

@Component({
  selector: 'app',
  template: `<ul>
                <li *ngFor="let article of articles | async"> {{article.headline.main}} </li>
             </ul>`, 
  providers: [HTTP_PROVIDERS, ArticleApi],
})
class App implements OnInit {
  constructor(private articleApi: ArticleApi) { }
  
  ngOnInit() {
    this.articles = this.articleApi.seachArticle('obama');
  }
}

enableProdMode();
bootstrap(App)
  .catch(err => console.error(err));

Ответ 3

  • Мы работаем над отдельным уровнем сохранения данных, который будет охватывать HTTP. Это еще не закончено.
  • Из-за Zone в Angular 2 вы можете использовать любой существующий механизм для извлечения данных. Сюда входят XMLHttpRequest, fetch() и любые другие сторонние библиотеки.
  • XHR в compiler должен быть закрытым, и мы можем изменить API в любое время и как таковое не должно использоваться.

Ответ 4

То же самое в Alpha 42, но можно заметить, что Headers и HTTP_PROVIDERS также относятся к angular2/http.

import {Http, Headers, HTTP_PROVIDERS} from 'angular2/http';

export class App {

  constructor(public http: Http) { }

  getThing() {
    this.http.get('http://example.com')
      .map(res => res.text())
      .subscribe(
        data => this.thing = data,
        err => this.logError(err),
        () => console.log('Complete')
      );
  }

}

Подробнее об этом и о том, как использовать наблюдаемые, которые возвращаются сюда: https://auth0.com/blog/2015/10/15/angular-2-series-part-3-using-http/

:)

Ответ 5

import {Injectable} from 'angular2/core';
import {Http, HTTP_PROVIDERS} from 'angular2/http';

@Injectable()
export class GroupSelfService {
    items:Array<any>;

    constructor(http:Http){
        http.get('http://127.0.0.1:8080/src/data/names.json')
        .subscribe(res => {
            this.items = res;
            console.log('results found');
        })
    }
}

Результаты в 404:
  Обнаружено изменение файла
  Обнаружено изменение файла
  GET/src/angular2/http 404 0.124 ms - 30

Две странные вещи:
1./src/angular2/http - не путь, по которому можно найти http, а не путь, который я предоставил в коде.
2. core.js находится рядом с http.js в папке node_modules/angular2 и находится.

Как это странно?

Обновление Mea culpa: Ни один из примеров не упоминается, что вам нужно ссылаться на http.js в своем html, как, например,   <script src="../node_modules/angular2/bundles/http.dev.js"></script>
... и затем это сработало.
Но для пути в сообщении об ошибке у меня все еще нет объяснений.

Ответ 6

Помимо всех ответов, приведенных ниже, если я прикрываюсь некоторыми дополнительными точками Вот Http как использовать/импортировать все...

ANGULAR2 HTTP (ОБНОВЛЕНО к Бета!!)

Во-первых, как ясно из имени, мы должны импортировать http файл в index.html, как этот

<script src="node_modules/angular2/bundles/http.dev.js"></script>

или вы можете обновить это через CDN отсюда

то на следующем этапе нам нужно импортировать Http и HTTP_PROVIDERS из пакетов, предоставленных angular.

но да, это хорошая практика для предоставления HTTP_PROVIDERS в файле начальной загрузки, потому что таким образом он предоставляется на глобальном уровне и доступен для всего проекта, как показано ниже.

bootstrap(App, [
    HTTP_PROVIDERS, some_more_dependency's
]);

и импорт от....

import {http} from 'angular2/http';

Использовать API-интерфейс Restover или json с помощью Http

Теперь вместе с http у нас есть еще несколько опций, снабженных angular2/​​http i.e, например Headers, Request, Requestoptions и т.д. и т.д. который в основном используется при использовании Rest API или временных данных Json. во-первых, мы должны импортировать все это следующим образом:

import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from 'angular2/http';

иногда нам нужно предоставить заголовки, потребляя API для отправки access_token и многое другое, что делается следующим образом:

this.headers = new Headers();
this.headers.append("Content-Type", 'application/json');
this.headers.append("Authorization", 'Bearer ' + localStorage.getItem('id_token'));

теперь приходят к RequestMethods: в основном мы используем GET, POST, но у нас есть еще один вариант, который вы можете здесь...

мы можем использовать методы запроса использования с помощью RequestMethod.method_name

есть еще один вариант для API, теперь я разместил один пример запроса POST с помощью нескольких важных методов:

PostRequest(url,data) {
        this.headers = new Headers();
        this.headers.append("Content-Type", 'application/json');
        this.headers.append("Authorization", 'Bearer ' + localStorage.getItem('id_token'))

        this.requestoptions = new RequestOptions({
            method: RequestMethod.Post,
            url: url,
            headers: this.headers,
            body: JSON.stringify(data)
        })

        return this.http.request(new Request(this.requestoptions))
            .map((res: Response) => {
                if (res) {
                    return [{ status: res.status, json: res.json() }]
                }
            });
    }

для получения дополнительной информации я нашел две лучшие ссылки здесь.. и здесь...

Ответ 7

Я считаю, что теперь (альфа .35 и 36) необходимо:

import {Http} from 'http/http';

Не забудьте добавить (поскольку теперь это отдельный файл) ссылка в вашем html: https://code.angularjs.org/2.0.0-alpha.36/http.dev.js

Ответ 8

Следуя нескольким ответам, вот полный рабочий пример использования модуля http

index.html

 <html>
  <head>
    <title>Angular 2 QuickStart</title>
    <script src="../node_modules/es6-shim/es6-shim.js"></script>
    <script src="../node_modules/systemjs/dist/system.src.js"></script>
    <script src="../node_modules/angular2/bundles/angular2.dev.js"></script>
    <script src="../node_modules/angular2/bundles/http.dev.js"></script>
    <script>
      System.config({
        packages: {'app': {defaultExtension: 'js'}}
      });
      System.import('app/app');
    </script>
  </head>
  <body>
    <app>loading...</app>
  </body>
</html>

app/app.ts

import {bootstrap, Component} from 'angular2/angular2';
import {Http, Headers, HTTP_PROVIDERS} from 'angular2/http';

@Component({
  selector: 'app',
  viewProviders: [HTTP_PROVIDERS],
  template: `<button (click)="ajaxMe()">Make ajax</button>`
})

class AppComponent {
  constructor(public http: Http) { }

  ajaxMe() {
    this.http.get('https://some-domain.com/api/json')
      .map(res => res.json())
      .subscribe(
        data => this.testOutput = data,
        err => console.log('foo'),
        () => console.log('Got response from API', this.testOutput)
      );
  }

}

bootstrap(AppComponent, []);

Ответ 9

Его уже в angular2, поэтому вам не нужно ничего помещать в package.json

Вам просто нужно импортировать и вводить его так. (это сервис Stuff с методомThatUsesHttp(), который просто регистрирует ответ)

import {XHR} from 'angular2/src/core/compiler/xhr/xhr';

export class Stuff {
    $http;
    constructor($http: XHR) {
        this.$http = $http;
    }

    methodThatUsesHttp() {
        var url = 'http://www.json-generator.com/api/json/get/cfgqzSXcVu?indent=2';

        this.$http.get(url).then(function(res) {
            console.log(res);
        }, function(err) {
            console.log(err);
        });
    }
}

Ответ 10

import {Http, Response} from '@angular/http';

Ответ 11

просто беги:

npm install --save  @angular/http

а затем импортировать через

import {HttpModule} from '@angular/http'

Ответ 12

Для угловых 4. 3+, 5. +

// app.module.ts:

import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';

// Import HttpClientModule from @angular/common/http
import {HttpClientModule} from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    // Include it under 'imports' in your application module
    // after BrowserModule.
    HttpClientModule,
  ],
})
export class MyAppModule {}

И внутри вашего класса обслуживания

import { HttpClient } from '@angular/common/http';

Другие пакеты, которые вам могут понадобиться

import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';

В package.json

"@angular/http": "^5.1.2",

Ссылка здесь

Ответ 13

Простой пример использования модуля http:

import {Component, View, bootstrap, bind, NgFor} from 'angular2/angular2';
import {Http, HTTP_BINDINGS} from 'angular2/http'

@Component({
   selector: 'app'
})

@View({
    templateUrl: 'devices.html',
    directives: [NgFor]
})

export class App {
    devices: any;
    constructor(http: Http) {
        this.devices = []; 
        http.get('./devices.json').toRx().subscribe(res => this.devices = res.json());
    }
}

bootstrap(App,[HTTP_BINDINGS]);