• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

サードパーティのサービスからデータを取得する

ヒント

このレッスンは、New Relic アプリケーションをゼロから構築する方法を学習するコースの一部です。 まだご覧になっていない方は、概要をご覧ください。

コースの各レッスンは前回のレッスンに基づいて構築されるため、このレッスンを開始する前に、前回のレッスン「Nerdlet から NerdStorageVault にアクセスする」を完了していることを確認してください。

前のレッスンでは、New Relic アプリケーションのTotal cancellations per version [バージョンごとの合計キャンセル数]チャートの模擬キャンセル データを取得するために使用できるサードパーティ サービスについて学習しました。 このサービス内のデータは偽物ですが、このレッスンの本当の価値は、サードパーティのサービスを使用して New Relic アプリケーションにデータを供給する方法を学ぶことです。

キャンセルデータを含むモックサービスにリクエストを送信する場合( https://api.nerdsletter.net/cancellations ) 「Unauthorized」というメッセージが表示され、リクエストを拒否する応答が表示されます。

bash
$
curl https://api.nerdsletter.net/cancellations
Unauthorized

これは、Nerdsletter API にAuthorizationヘッダーが必要であるためです。 具体的には、データへの承認されたアクセスを取得するには、 ABC123のベアラー トークンを渡す必要があります。 ヘッダーAuthorization: Bearer ABC123を使用してサービスにリクエストを送信すると、モックされたキャンセル データを含む成功応答が返されます。

bash
$
curl https://api.nerdsletter.net/cancellations -H 'Authorization: Bearer ABC123'
{"a": 15, "b": 78}

前回のレッスンでは、 NerdGraphを使用してこの API トークンを New Relic アプリケーションのNerdStorageVaultデータ ストアに保存しました。 また、トークンを TotalCancellations コンポーネントに渡し、その使用状況をbrowserのコンソールにログに記録しました。 このレッスンでは、そのログ ステートメントに続いて、認証トークンを使用して Nerdsletter API に実際のリクエストを送信します。 次に、その外部リソースからのデータをTotal cancellations per version [バージョンごとの合計キャンセル数]グラフに入力します。

コースワークリポジトリ third-party-services/ab-test ディレクトリに変更します。

bash
$
cd nru-programmability-course/third-party-services/ab-test

このディレクトリには、コースのこの時点でアプリケーションに含まれることが予想されるコードが含まれています。 各レッスンの開始時に正しいディレクトリに移動することで、カスタム コードが残され、間違ったコードがレッスン間で持ち越されることがなくなります。

nerdlets/ab-test-nerdlet/total-cancellations.jsで、API トークンを使用してapi.nerdsletter.netにリクエストを送信します。 結果を状態に保存し、その状態をrender()で使用します。

import React from 'react';
import { HeadingText, PieChart } from 'nr1';
export default class TotalCancellations extends React.Component {
constructor() {
super(...arguments);
this.state = {
cancellations: [],
lastToken: null
}
}
generateChartData(data) {
const cancellationsA = data ? data.a : 0;
const cancellationsB = data ? data.b : 0;
return [
{
metadata: {
id: 'cancellations-A',
name: 'Version A',
viz: 'main',
color: 'blue',
},
data: [
{ y: cancellationsA },
],
},
{
metadata: {
id: 'cancellations-B',
name: 'Version B',
viz: 'main',
color: 'green',
},
data: [
{ y: cancellationsB },
],
},
]
}
componentDidUpdate() {
if (this.props.token && this.props.token != this.state.lastToken) {
console.log(`Requesting data with api token ${this.props.token}`)
fetch(
"https://api.nerdsletter.net/cancellations",
{headers: {"Authorization": `Bearer ${this.props.token}`}}
).then(
(response) => {
if (response.status == 200) {
return response.json()
} else if (response.status == 401) {
console.error("Incorrect auth header")
} else {
console.error(response.text())
}
}
).then(
(data) => {
if (data) {
this.setState({
cancellations: this.generateChartData(data),
lastToken: this.props.token
})
}
}
)
}
}
render() {
return <div>
<HeadingText className="chartHeader">
Total cancellations per version
</HeadingText>
<PieChart data={this.state.cancellations} fullWidth />
</div>
}
}

このコードでは、各シリーズの y 値を、以前にハードコードされた値ではなく、ゼロでTotalCancellations.state.cancellations初期化します。 これにより、New Relic アプリが Nerdsletter API からデータを正常に要求しなかった場合、チャートに表示される内容をより現実的に表現できるようになります。 次に、Javascript のfetch()関数を使用して、Nerdsletter API に HTTP リクエストを送信します。 次に、リクエストのAuthorizationヘッダーでトークンを渡します。 リクエストが成功した場合は、 TotalCancellations.stateのキャンセル データを更新して、そのデータがコンポーネントのレンダリング メソッドに反映されるようにします。

nru-programmability-course/third-party-service/ab-testにある Nerdpack のルートに移動します。

Nerdpack の新しい UUID を生成します。

bash
$
nr1 nerdpack:uuid -gf

既存の Nerdpack を含むコースワーク リポジトリを複製したため、独自の一意の識別子を生成する必要があります。 この UUID は Nerdpack を New Relic アカウントにマッピングします。 また、アプリがアカウントに代わって Nerdgraph リクエストを行うことも可能になります。

アプリケーションをローカルで提供します。

bash
$
nr1 nerdpack:serve

https://one.newrelic.com?nerdpacks=localにアクセスし、 Apps [アプリ] > Your apps [あなたのアプリ]でアプリケーションを表示します。

NerdStorageVaultのトークンが「ABC123」でない場合、コンソールに「認証ヘッダーが正しくありません」というエラーが表示されます。

トークンを「ABC123」に設定すると、Total cancellations per version [バージョンごとのキャンセルの合計数が]更新され、サードパーティ サービスからの値が表示されます。

ヒント

何かがうまくいかない場合は、 browserのデバッグ ツールを使用して問題を特定してください。

以下の点を確認してください:

  • レッスンからコードを正しくコピーしました
  • 新しいUUIDを生成しました
  • プロジェクト内の<YOUR NEW RELIC ACCOUNT ID>のすべてのインスタンスを実際の New Relicアカウント IDに置き換えました

完了したら、ローカル サーバーのターミナル ウィンドウでCTRL+Cを押して、New Relic アプリケーションの提供を停止します。

よくやった! nr1 nerdpack:createを初めて実行してから長い道のりを歩んできました。

さまざまなスタイルの 8 つのグラフを作成し、複数のソースからの動的なデータをグラフに提供しました。 New Relic One SDK について学び、そのコンポーネントの多くを使用しました。 サードパーティのサービスからデータを収集し、それをNew Relicデータとシームレスに混合して、A/B テストで競合するバージョンが互いにどのようにパフォーマンスするかを完全に把握できるようになりました。

ここから、New Relic One SDK でまだ入手していない API セットは、プラットフォーム API だけです。 これらは、New Relic アプリケーションの使いやすさを向上させるのに役立ちます。

ヒント

このレッスンは、New Relic アプリケーションをゼロから構築する方法を学習するコースの一部です。 次のレッスンに進みましょう: ナードレットに PlatformStateContext を追加します。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.