副業におすすめなサイトを見る→

【Anuglar】APIを実行するためにHttpClientを実装

httpclient

アプリリリースのお知らせ

予定を探すアプリyoteipickerをリリースしました。

アプリの利用用途:暇だから何か予定入れたいけど今週の土日は何しようかな〜?ってときに使えるアプリです。

JSONデータはjsonplaceholderを使用してダミーデータを取得するようにします。

例えば、jsonplaceholderのResourcesに/usersという項目があるのですが、https://jsonplaceholder.typicode.com/usersにアクセスしてみると、usersのjsonデータがかくにんできると思います。

GETメソッドの他にもPOST、PUT、DELETEメソッドも用意されているので、テストするのに便利です。

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

Contents

事前に準備すること

結論、データを取得するためにHttpClientを使いますが、モジュールをimportしてください。

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

@NgModule({
  imports: [
    BrowserModule,
    // import HttpClientModule after BrowserModule.
    HttpClientModule,
  ],
  declarations: [
    AppComponent,
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {}

GETでデータを取得する

jsonplaceholderから取得してくるデータは、/usersのデータになります。

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

@Injectable({
  providedIn: 'root'
})
export class V1Service {

  constructor(private http: HttpClient) { }

  public getUsers() {
    return this.http.get('https://jsonplaceholder.typicode.com/users');
  }
}
import { Component, OnInit } from '@angular/core';
import { V1Service } from 'src/app/service/v1.service';

@Component({
  selector: 'app-t1',
  templateUrl: './t1.component.html',
  styleUrls: ['./t1.component.css']
})
export class T1Component implements OnInit {
  public users: any;

  constructor(private v1Service: V1Service) { }

  ngOnInit(): void {
    this.v1Service.getUsers().subscribe((user) => {
      console.log(user);
      this.users = user;
    })
  }

}
<div *ngFor="let user of users">
    {{ user.id }}
    {{ user.name }}
    {{ user.phone }}
</div>

console.log(user)の実行結果は、以下のようにコンソール上で確認できます。

HTMLでは以下のようにuserの情報が取得できて表示されます。

POSTでフォームのデータを送信する

jsonplaceholderのPOSTで送信するURLは、/postsを使います。

post送信するために、postUserを追加しました。この関数でHttpClientを使ってPOST送信します。

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

@Injectable({
  providedIn: 'root'
})
export class V1Service {

  constructor(private http: HttpClient) { }

  public getUsers() {
    return this.http.get('https://jsonplaceholder.typicode.com/users');
  }

  public postUser(data: any) {
    return this.http.post('https://jsonplaceholder.typicode.com/posts', data);
  }
}

フォームを追加したりしてますが、POST送信するメソッドは、addUserです。

addUserは、HTMLからフォームの値を受け取り、先ほどのサービスクラスのPOST送信するpostUserを呼び出しています。

GETもそうだし、POST送信もそうですが、httpClientを実行するためには、非同期で行う必要があるので、.subscribeを使います。

console.log(data)でフォームに入力した値を取得でき、console.log(response)でpost送信した値を取得できます。

import { Component, OnInit } from '@angular/core';
import { V1Service } from 'src/app/service/v1.service';
import {  FormControl, FormGroup } from '@angular/forms';

@Component({
  selector: 'app-t1',
  templateUrl: './t1.component.html',
  styleUrls: ['./t1.component.css']
})
export class T1Component implements OnInit {
  public users: any;
  public userForm = new FormGroup({
    userId: new FormControl(''),
    title: new FormControl(''),
    body: new FormControl(''),
  });

  constructor(private v1Service: V1Service) { }

  ngOnInit(): void {
    this.v1Service.getUsers().subscribe((user) => {
      this.users = user;
    })
  }

  public addUser(data: any) {
    console.log(data);
    this.v1Service.postUser(data).subscribe((response) => {
      console.log(response);
    })
  }
}

HTMLになります。

<form style="width: 100%;" [formGroup]="userForm" (ngSubmit)="addUser(userForm.value)">
    <input style="width: 100%;" type="text" formControlName="userId">
    <input style="width: 100%;" type="text" formControlName="title">
    <input style="width: 100%;" type="text" formControlName="body">
    <button mat-raised-button color="primary">POST</button>
</form>

jsonplaceholderの/postsにデータを送信してみるとわかるのですが、データを送信する前と後では、jsonデータにidがあるかの違いがあるようです。

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

スキルを売り買いするならココナラ

コメント

コメントする

CAPTCHA


Contents
閉じる