C#でWebAPIの作り方入門!初心者向けREST API開発とASP.NETの基本
生徒
「インターネットでデータをやり取りする仕組みを作りたいのですが、C#でもできますか?」
先生
「C#にはASP.NETという強力な仕組みがあり、WebAPIと呼ばれる仕組みを簡単に作成することができます。」
生徒
「WebAPIやREST APIという言葉をよく聞きますが、パソコンを触ったことがない私には難しそうです。」
先生
「難しく見えますが、仕組みはお店の注文と配達と同じです。基礎から順番に分かりやすく解説していきますね。」
生徒
「それなら私にも理解できそうです。具体的な作成方法やプログラムの書き方を教えてください!」
先生
「それでは、C#を使ったWebAPI開発の第一歩を一緒に踏み出しましょう!」
1. WebAPIとREST APIの基本知識
インターネットを利用しているとき、私たちは意識せずにたくさんのプログラムと通信をしています。その中心にある仕組みがWebAPI(ウェブエーピーアイ)です。APIとは、プログラムとプログラムを繋ぐ窓口のようなものです。身近な例で言うと、スマートフォンの天気予報アプリが、気象庁のデータサーバーから最新の天気を取得するときなどに使われています。
そして、そのWebAPIを作る上での世界的なルール、共通の約束事のことをREST API(レストエーピーアイ)と呼びます。このルールに従って作られた仕組みは、シンプルで扱いやすく、世界中のシステムで広く採用されています。パソコンの操作をしたことがない方でも、この約束事を知ることで、ホームページの裏側で動いているデータの仕組みが見えてくるようになります。
2. インターネットの通信とリクエストの仕組み
WebAPIの動きを理解するために、身近なお店での注文を想像してみましょう。あなたがレストランに入って店員さんにハンバーガーを注文すると、厨房で作られたハンバーガーが席に届きますね。インターネットの世界もこれと全く同じ仕組みで動いています。
データを欲しいとお願いする側の人やプログラムのことをクライアント(顧客)と呼び、そのお願いを処理してデータを返すコンピューターのことをサーバー(給仕人)と呼びます。そして、クライアントからサーバーへの注文のことをリクエスト(要求)、サーバーからクライアントへ届くお返事のことをレスポンス(応答)と呼びます。このリクエストとレスポンスの往復によって、インターネット上のサービスはすべて成り立っています。
3. HTTPメソッドの種類と役割
お店で注文をするときに、ただメニューを頼むだけでなく、追加をお願いしたり、取り消しをお願いしたりすることがありますね。REST APIのルールでは、この注文の種類をHTTPメソッド(エイチティーティーピーメソッド)という言葉で区別します。主な種類は以下の四つです。
- GET(ゲット): データを手に入れたい、見たいときに使います。メニューを見る操作です。
- POST(ポスト): 新しいデータを登録したいときに使います。新しい注文を確定する操作です。
- PUT(プット): すでにあるデータを書き換えたい、更新したいときに使います。注文内容を変更する操作です。
このように、やりたい操作に合わせて明確に命令の種類を分けることが、世界共通の使いやすいWebAPIを作るための大切な基盤となっています。
4. ASP.NETと開発環境の準備
C#というプログラミング言語を使って、このWebAPIの仕組みを作るために使用するのが、マイクロソフト社が提供しているASP.NET(エーエスピーネット)という開発用の土台です。これを使うことで、複雑な通信の処理をゼロから書く必要がなくなり、初心者でも安全で高速なプログラムを組み立てることができます。
開発を始めるには、パソコンにVisual Studio(ビジュアルスタジオ)というソフトウェアをインストールします。これはプログラムを書くための高機能なノートのようなもので、これ一つで画面の作成からテストまでを行うことができます。新しくプロジェクトを作成する画面で、ウェブ用のテンプレートを選択するだけで、WebAPIの骨組みが自動的に出来上がります。
5. コントローラーの基礎と最小のプログラム
WebAPIの中で、届いた注文を一番に受け取って処理の交通整理を行う役割をコントローラーと呼びます。お店の受付窓口や、会社の受付係のような存在です。C#のプログラムでは、このコントローラーの中に具体的な処理を書いていきます。
まずは、一番単純な、文字を返すだけのプログラムを見てみましょう。画面に挨拶を表示する処理を作成します。
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/greeting")]
public class GreetingController : ControllerBase
{
[HttpGet]
public string GetGreeting()
{
return "こんにちは!初めてのウェブエーピーアイへようこそ。";
}
}
このプログラムでは、インターネットを通じてこの窓口にアクセスがあると、指定された日本語の文字列がそのままお返事として返却される仕組みになっています。
6. データの受け渡しとプログラムの実行
次に、ただ挨拶を返すだけでなく、相手から名前を教えてもらって、その名前に合わせたお返事をするプログラムを作ってみましょう。このように外部から送られてくる情報のことをパラメーター(引数)と呼びます。
以下のプログラムは、名前のデータを受け取って、歓迎のメッセージを組み立てる処理の例です。
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/welcome")]
public class WelcomeController : ControllerBase
{
[HttpGet]
public string GetWelcomeMessage(string userName)
{
return userName + "さん、今日もプログラミングの学習を頑張りましょう!";
}
}
このプログラムを実行して、名前のデータを一緒に送ると、以下のような結果が出力されます。
太郎さん、今日もプログラミングの学習を頑張りましょう!
このように、相手の入力によって返す内容を変化させることが、動的なウェブアプリ開発の基本となります。
7. JSON形式による複数データの返却
実際のWebAPIでは、文字を一つだけ返すのではなく、たくさんのデータをまとめて返却することが一般的です。その際に使われる世界共通のデータ表記形式をJSON(ジェイソン)と呼びます。これは、データの名前と中身をペアにして並べたもので、人間にもコンピューターにも読みやすい特徴を持っています。
C#では、クラスと呼ばれるデータの型を定義するだけで、ASP.NETが自動的に綺麗なJSON形式に変換してくれます。商品の情報を返すプログラムを作成してみましょう。
using Microsoft.AspNetCore.Mvc;
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
[ApiController]
[Route("api/product")]
public class ProductController : ControllerBase
{
[HttpGet]
public Product GetProductData()
{
Product item = new Product();
item.Id = 101;
item.Name = "学習用ノートパソコン";
item.Price = 85000;
return item;
}
}
このプログラムを動かすと、内部で自動的に変換が行われ、以下のような形式でデータが出力されます。これが実際のシステム開発で最もよく使われるデータの形です。
{
"id": 101,
"name": "学習用ノートパソコン",
"price": 85000
}
8. データの登録を行う処理の実装
最後に、データを新しく保存するための登録処理を作ってみましょう。これには先ほど紹介したHTTPメソッドの中のPOST(ポスト)を使用します。クライアントから送られてきた商品データをサーバー側で受け取るシミュレーションを行います。
以下のコードは、送られてきたデータを受け取り、登録が成功したというメッセージを返す処理です。
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/register")]
public class RegisterController : ControllerBase
{
[HttpPost]
public string CreateNewProduct(Product newProduct)
{
return "商品「" + newProduct.Name + "」の登録が正常に完了しました。";
}
}
この仕組みを使うことで、スマートフォンアプリで入力した情報を、インターネットの向こう側にあるデータベースに新しく保存するようなシステムを作ることが可能になります。