質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

2020閲覧

Angular2でのHTTP通信について

pikohideaki

総合スコア8

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/04/07 10:22

###前提・実現したいこと
Angular2のチュートリアルを参考に勉強しており、Http通信の部分についての質問です。

公式チュートリアルの通り、InMemoryWebAPIをインストールして読み書きを実行することはできたのですが、json形式ファイルなどの外部ファイルを読み書きしたいと思っています。ローカル開発環境でこれは不可能なのでしょうか。

サーバーに上げる前にローカル開発環境でファイルの読み書きをテストできるようにしたいので、おすすめの方法があれば教えてください。

これまでサーバーとのデータのやりとりはPHPでしか書いたことが無いため、InMemoryWebAPIの位置づけなどをあまり理解できていない可能性がありますが、そのあたりも含めておすすめの方法や資料があれば教えていただけると助かります。

###試したこと

  • ng buildしてdistの内容を物理サーバーにアップロード

→ 物理サーバー上ではファイルのアドレスを指定すればhttp.getなどがとりあえず動くのは確認できた
(ローカル開発環境でそのようなファイル操作をテストしたい)

  • Angular2のデフォルトのローカル開発環境をファイル構成を手動で操作できる自前のローカル開発環境で置き換える?

→ そのような方法があるかどうか分からない

###該当のソースコード

公式チュートリアルと少し名前を変えてしまっていますがやることはほとんどそのままです。
CardInfoというクラスを読み込んでおり、cardinfo.json のようなデータを読み込んで表示する部分です。

ts

1import { Component, OnInit } from '@angular/core'; 2import { HttpModule, Http, Headers } from '@angular/http'; 3 4import 'rxjs/add/operator/toPromise'; 5 6import { CardInfo } from "../../card-info"; 7 8 9@Component({ 10 selector: 'app-cardlist', 11 templateUrl: './cardlist.component.html', 12 styleUrls: ['./cardlist.component.css'] 13}) 14export class CardlistComponent implements OnInit { 15 16 CardInfoList: CardInfo[]; 17 18 constructor( 19 private http: Http 20 ) {} 21 22 ngOnInit() { 23 this.GetCardInfo() 24 .then( CardInfoArray => this.CardInfoList = CardInfoArray ); 25 } 26 27 28 private CardInfoUrl = './cardinfo.json'; 29 // private CardInfoUrl = 'api/cardinfo'; 30 31 private handleError( error: any ): Promise<any> { 32 console.error('An error occurred', error); // for demo purposes only 33 return Promise.reject( error.message || error ); 34 } 35 36 // get CardInfo 37 GetCardInfo(): Promise< CardInfo[] > { 38 console.log( this.CardInfoUrl ); 39 return this.http 40 .get( this.CardInfoUrl ) 41 .toPromise() 42 // .then( response => console.log( response.json().data ) ) 43 .then( response => response.json().data as CardInfo[] ) 44 .catch( this.handleError ); 45 } 46}

json

1// cardinfo.json 2{ 3 "data" : [ 4 { "id": 11, "name": "aaaaaa" }, 5 { "id": 12, "name": "bbbbbb" }, 6 { "id": 13, "name": "cccccc" } 7 ] 8}

###補足情報(言語/FW/ツール等のバージョンなど)

$ ng --version @angular/cli: 1.0.0 node: 6.10.0 os: win32 x64 @angular/common: 4.0.1 @angular/compiler: 4.0.1 @angular/core: 4.0.1 @angular/forms: 4.0.1 @angular/http: 4.0.1 @angular/platform-browser: 4.0.1 @angular/platform-browser-dynamic: 4.0.1 @angular/router: 4.0.1 @angular/cli: 1.0.0 @angular/compiler-cli: 4.0.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問