演習 - GitHub Copilot を使用して Web API を更新する

完了

API エンドポイントの高度な GitHub Copilot 手法を使用して、Python リポジトリを変更する方法を調べましょう。 Travel Weather API をホストする Python Web アプリケーションを含むこのリポジトリを使用して、より実用的なエクスペリエンスを得ます。

API とは

API は、さまざまなアプリケーションが相互に通信できるようにする仲介役として機能します。 たとえば、気象 Web サイトでは、API を使用して、履歴データを共有したり、予測機能を提供したりできます。 API を使用して、Web サイトにデータを埋め込んだり、他の機能と共に気象データを共有するアプリケーションを作成したりできます。

Web API を拡張する

現在の API は国/地域を公開していません。これは、都市を一覧表示するために実装する必要があります。 このルートでは、その国/地域、市区町村、特定の月の過去の高低からの情報を提供する JSON 応答を持つ GET HTTP 要求のみを許可する必要があります。

この演習では、ブラウザーで、事前構成済みの環境で Codespace を使用します。

ステップ 1: 新しいルートを追加する

main.py ファイルを開き、コマンド Ctrl + i (Windows)、または Command + i (Mac) を使用してインライン チャットを使用します。 このコマンドは、国/地域の都市を示す新しい API の作成を GitHub Copilot に依頼します。 次のプロンプトを使用します。

Create a new route that exposes the cities of a country/region.

このプロンプトでは次のような内容が表示されるはずです。

# Create a new route that exposes the cities of a country:
@app.get('/countries/{country}')
def cities(country: str):
    return list(data[country].keys())

新しいルートを試し、結果が希望どおりになるまでプロンプトを絞り込みます。

ステップ 2: テストを作成する

新しいルートを作成したら、国/地域としてスペインを使用するこのルートの Copilot Chat を使用してテストを作成します。 必ず、コードを選択し、先ほど作成したこの特定の API について支援するように Copilot Chat に依頼してください。 次のプロンプトで、インライン チャットまたは専用のチャット ペインを使用できます。

/tests help me to create a new test for this route that uses Spain as the country/region.

Copilot の支援によりテストを作成できたら、それを試してみてください。 これが期待どおりに機能しない場合は、チャットでそれらの詳細を Copilot と自由に共有してください。 次に例を示します。

This test is not quite right, it is not including cities that doesn't exist. Only Seville is part of the API.

ステップ 3: エージェントを使用してドキュメントを記述する

最後に、GitHub Copilot チャット エージェント モードを使用して、プロジェクトのドキュメントとプロジェクト自体の実行方法の詳細を記述します。 README.md ファイルを開き、GitHub Copilot Chat で次のプロンプトを使用します。

I want to document how to run this project so that other developers can get started quickly by reading the README.md file.

プロジェクトを実行するために必要な情報で README.md ファイルを更新するのに役立つ応答が得られるはずです。

以上でこの演習は完了です。 GitHub Copilot を使用して新しい API ルートを生成し、その正確性を確認するためのテストを記述しました。 最後に、エージェントを使用して、開発者がこのプロジェクトの実行方法を理解するのに役立つドキュメントを追加しました。

GitHub で演習を終えたら、以下のためにここに戻ります。

  • 簡単な知識チェック
  • 学習した内容のまとめ
  • このモジュールを修了するためのバッジ