【C#】 API呼び出しの基本から実践まで解説

※ この記事にはアフィリエイトリンクが含まれます

C#でAPIを呼び出すときに、うまく動かなくて悩んでいませんか?

多くの初学者が接続や認証、エラー処理で詰まります。

  • APIへの接続方法がわからない
  • POSTやGETの実装で失敗する
  • 認証トークンやヘッダの扱いで混乱する

結論から言うと、正しい準備と基本パターンを押さえれば

C#でのAPI呼び出しは安定して実装できます。

・HttpClientの基本的な使い方を覚える

・非同期処理(async/await)を使う

・エラー処理とセキュリティの注意点を実装する

この記事では、C# API 呼び出しの基礎から具体的なコード例、

運用で気をつけるポイントまで順を追って解説します。

目次

C#でAPIを呼び出す準備と基礎知識

まずはHTTP通信の基本を理解しましょう。

C#では主にHttpClientを利用します。

HttpClientはGETやPOSTといったリクエストを送信し、

レスポンスを受け取るための標準的なクラスです。

HttpClientの役割と使い方のポイント

HttpClientは使い方を誤るとコネクションリークなどの問題が出ます。

基本は再利用して使うことが重要です。

ASP.NET CoreではIHttpClientFactoryを使って生成するのが推奨です。

コンソールアプリでは静的なインスタンスを再利用してください。

基本的なGETリクエストの実装例

まずは簡単なGETリクエストを行う例を示します。

非同期で実行するのが標準的です。

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Example {
  static async Task Main() {
    using var client = new HttpClient();
    client.Timeout = TimeSpan.FromSeconds(30);
    var url = "https://api.example.com/items";
    var response = await client.GetAsync(url);
    if (response.IsSuccessStatusCode) {
      var body = await response.Content.ReadAsStringAsync();
      Console.WriteLine(body);
    } else {
      Console.WriteLine($"Error: {(int)response.StatusCode}");
    }
  }
}

ポイントはasync/awaitを使うことと、

IsSuccessStatusCodeで成功判定をすることです。

またタイムアウト設定や例外処理も必ず追加しましょう。

ネットワークは必ず失敗する可能性があります。

POSTでJSONを送る具体例

APIにデータを送るときはJSONを使うことが多いです。

Content-Typeをapplication/jsonに設定します。

using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class PostExample {
  static async Task Main() {
    using var client = new HttpClient();
    client.Timeout = TimeSpan.FromSeconds(30);
    var url = "https://api.example.com/items";
    var requestData = new { name = "sample", value = 123 };
    var json = JsonSerializer.Serialize(requestData);
    var content = new StringContent(json, Encoding.UTF8, "application/json");
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "YOUR_TOKEN");
    var response = await client.PostAsync(url, content);
    if (response.IsSuccessStatusCode) {
      var responseBody = await response.Content.ReadAsStringAsync();
      Console.WriteLine(responseBody);
    } else {
      var err = await response.Content.ReadAsStringAsync();
      Console.WriteLine($"Error: {(int)response.StatusCode} {err}");
    }
  }
}

ここでのポイントはヘッダの設定とJSONシリアライズです。

AuthenticationHeaderValueBearerトークンを設定しています。

エラー処理とデバッグの実践

API呼び出しではステータスコードだけでなく

レスポンスボディのメッセージも確認するべきです。

例外処理も必須です。タイムアウトやネットワーク例外を捕捉し、

ログを残して再試行やユーザーへの通知を行いましょう。

例外処理の基本パターン

HttpRequestExceptionTaskCanceledExceptionを捕まえます。

詳細なログと共に処理を分岐させます。

try {
  var response = await client.GetAsync(url);
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
} catch (HttpRequestException ex) {
  // ネットワーク関連の例外
  Console.WriteLine("Network error: " + ex.Message);
} catch (TaskCanceledException ex) {
  // タイムアウト
  Console.WriteLine("Timeout: " + ex.Message);
}

EnsureSuccessStatusCodeは成功でない場合に例外を投げます。

これを使うか、IsSuccessStatusCodeで細かく判定するか選べます。

セキュリティと認証の注意点

API呼び出しでは認証情報を安全に扱うことが重要です。

トークンやAPIキーをソースコードに直書きしないでください。

環境変数やシークレットストアを利用して、

本番環境では安全に保存・取得しましょう。

実運用での推奨設定

HTTPSを必ず使用し、証明書検証を有効にします。

必要に応じてTLSのバージョン制限を行います。

また、レートリミットやリトライポリシーを設計し、

サービス保護と安定性を確保しましょう。

実践的な改善ポイントとベストプラクティス

長期運用を考えるとHttpClientの管理が重要です。

毎回newするのではなく再利用してください。

ASP.NET CoreではIHttpClientFactoryを使えば

接続管理や名前付きクライアントが簡単に扱えます。

  • HttpClientは再利用する
  • 非同期処理を徹底する(UIをブロックしない)
  • 例外とステータスコードを適切に処理する
  • 認証情報は安全に管理する

よくあるトラブルと対処法

よくある問題はタイムアウト、認証失敗、CORSなどです。

ログを見て原因を特定するのが第一歩です。

タイムアウトはTimeoutプロパティやCancellationTokenで対応し、

認証失敗はヘッダやトークンの有効期限を確認してください。

まとめ

ここまででC# API 呼び出しの基本を網羅しました。

ポイントはHttpClientの使い方とエラー処理です。

この記事を参考に、まずは小さなAPI呼び出しを実装してみてください。

実際に動かして学ぶことで理解が深まります。

#エンジニアとして、もっと自分の力を活かしたいあなたへ

「このまま今の職場にいて、成長できるんだろうか?」

C#を使っている方なら、一度はそう感じたことがあるかもしれません。

実は今、C#/.NETエンジニアの市場価値は高まっており
年収アップ・フルリモート・自社開発企業など、選べる選択肢は確実に増えています。

もし今後、C#を活かして働きたい、あるいは開発現場で経験を積みたいとお考えなら…
自分に合った転職サービスを早めに知っておくことが大きな武器になります。

現役エンジニアからのサポート付き・無料で学べるスクール・社内SE特化の求人など、
転職支援サービスを厳選したまとめ記事をこちらで紹介しています。

ここまで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

沖縄出身のエンジニアです。IT業界で5年以上の経験があり、主にC#やPHPを使って開発を行ってきました。新しい技術にも興味があり、日々学びながらスキルアップを目指しています。

コメント

コメントする

CAPTCHA


目次