@Programep

Как выполнить GET запрос в angularjs 2 к localhost?

Добрый день! Подскажите, пожалуйста, что неправильно делаю.
1. Создал сервис на angularjs2:
import {Injectable} from '@angular/core';
import {Http, Response} from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class EventsService {  
	private _url: string = "http://localhost:4200/api/data.json";		
	constructor(private http: Http){}      
    getData(){ 		
        return this.http.get(this._url)
				.map( (response: Response) => response.json() );
    }
}

2. Запускаю в каталоге проекта команду: npm start.
3. В браузере по адресу localhost:4200 проект работает.
Но в консоли браузера ошибка при получении файла localhost:4200/api/data.json:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /api/data.json</pre>
</body>
</html>

Я предполагаю, что npm start не запускает полноценный сервер.
  • Вопрос задан
  • 1035 просмотров
Решения вопроса 2
agladkov
@agladkov
1. Для начала нужно понимать как работает HTTP. Это клиент-серверная архитектура.
2. Angular работает в браузере - клиент.
3. npm start (ng serve) - запускает простейший веб-сервер, который отдает статические файлы с кодом Angular для работы в браузере.

У запущенного веб- сервера нет файла localhost:4200/api/data.json

Если хочешь что бы тестовый веб-сервер отдавал статический файл data.json, то нужно копать в сторону "ng server static files"

А это параметр assets в конфигурационном файле angular-cli.json
Ответ написан
@Programep Автор вопроса
Получилось получить файл data.json переместив в каталог src/assets. Но так как похоже на сегодня сервер поставляемый с angular 2 не умеет отдавать динамические запросы, пришлось запускать nginx + cgi.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы