Angularjs は HTTP Post でデータを送信する
このトピックの本当のポイントに飛び込む前に、まず、Angular で http.post() が何をするかを学びましょう。Google について考えると、検索時に受け取る検索結果は post メソッドを使用してサーバーに送信され、ユーザーが Google で検索を開始すると、get メソッドが呼び出されます。
そのため、Angular では http.post() を使用してサーバーにデータを保存します。このデータを停止するサーバーには URL があります。
コーダーが初めて $http.post() に出くわしたとき、特に jQuery の知識がある人は、最初の本能は $jQuery.post() を $http.post() に置き換えることですが、これは Angular はデータの送信方法が異なるため、機能しません。
$http.post() 関数が正しく適用されていない場合、送信される URL データが呼び出されますが、データは送信されません。先に進んで、HTTP Post 関数を適切に適用するさまざまな方法を見てみましょう。
Angular で応答タイプ <any> を使用して API にリクエストを送信する
最初の例では、Jason に割り当てられた ID を返す URL をリクエストする必要があります。応答タイプは <any> であるため、応答として返送されたすべてのプロパティを処理します。
設定するのは非常に簡単な html です。
<div>
<h1>Angularjs HTTP POST</h1>
<div>Post Id: {{ postId }}</div>
</div>
次に、app.component.ts に移動します。ここで HttpClient をインポートします。これにより、HTTP リクエストが Angular に送信されます。次に、コンストラクターとして同じ HttpClient を使用します。
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({ selector: 'app-root', templateUrl: 'app.component.html' })
export class AppComponent implements OnInit {
postId;
constructor(private http: HttpClient) {}
ngOnInit() {
this.http
.post<any>('https://reqres.in/api/users', {
name: 'Jason',
})
.subscribe((data) => {
this.postId = data.id;
});
}
}
そして最後に、app.module.ts に進みます。ここでは、HttpClientModule を Angular にインポートします。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
HttpClientModule
],
declarations: [
AppComponent
],
bootstrap: [AppComponent]
})
export class AppModule { }
すべてが指示どおりに進むと、3つの番号が生成された投稿 ID が表示されます。
Angular で期待される応答を伴う POST リクエスト
このメソッドを使用すると、取得するデータを割り当てることができるため、URL から取得する応答をより適切に制御できます。このタスクでは、interface Article 関数を呼び出します。
app.component.ts にわずかな変更を加えるだけで、<any> を <Article> に置き換え、そのすぐ下に Article 関数を作成します。
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({ selector: 'app-root', templateUrl: 'app.component.html' })
export class AppComponent implements OnInit {
postId;
constructor(private http: HttpClient) {}
ngOnInit() {
this.http
.post<Article>('https://reqres.in/api/users', {
name: 'Jason',
})
.subscribe((data) => {
this.postId = data.name;
});
}
}
interface Article {
id: number;
name: string;
}
HTTP が ID を応答として返す代わりに、ID に割り当てられた名前が取得されます。
Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.
LinkedIn