WEBシステムとの連携では、よくWEB-APIを使用しますが、そのWEB-APIのサーバー側処理のサンプルを作ってみました。動作環境としては、Azure Appサービスを使っています。(無料でいろいろできるので)
サンプルは、クライアントから、postリクエストを送信します。エンドポイント(url) = https://xxxxxxxx/api/linewebhook として作成しました。ClsPostDataクラスは、リクエストを受取る為の構造体です。
初めてWEB-APIを見る人は、良くわからないと思いますが、[HttpPost]に続く関数が、POSTリクエストの受信時に発生するイベントです。
Class名 = LineWebHookController の場合、エンドポイント(url)は、xxx/api/linewebhook となります。(そういう決まりになっている為)
※【注意】下記のサンプルでは、リクエスト元の認証の処理が書かれていません。実際に使用する際には、リクエストのヘッダー情報にシークレットKEYをセットして認証するなどの処理が必要です。
using Microsoft.AspNetCore.Mvc; using System.Net.Mail; namespace WebApiPost01.Controllers { [Route("api/[controller]")] [ApiController] public class LineWebHookController : ControllerBase { [HttpPost] public IActionResult Post([FromBody] ClsPostData postData) { // POSTリクエストデータ有無チェック if (postData == null) { return BadRequest("Invalid request data."); } // メール送信 (POSTリクエストを受信した時に実行する処理) Fn_SendMail(postData.Title, postData.Message); // 戻り値(クライアント側に返す値) return Ok(new { Message = $"受信: タイトル = {postData.Title}," + $"内容 = {postData.Message}" }); } } // EOF POST // POSTリクエスト取得用クラス public class ClsPostData { public string Title { get; set; } public string Message { get; set; } // ... 他のフィールドも追加できます } }
Asp.Net Coreには、クライアントからのPOSTリクエストをテストする、swaggerというツールが標準でついていますが、あえてPOSTMANでテストしました。
送信データは、通常JSON形式で渡す決まりになっています。このJSONデータをサーバー側のClsPostDataクラスで受け取ります。