ASP.NET CoreでWebAPIを作り、XML形式のRequestを受け取れるかを試してみました。 .NET Core 3.1、ASP.NET CoreでWebAPIのプロジェクトを作成します。
まずControllerとActionを用意します。
[Route("api/[controller]/[action]")] [ApiController] public class SampleController : ControllerBase { [HttpPost] public IActionResult Update(UpdateRequest request) { return Ok(); } }
UpdateRequestの中身はこんな感じです。
public class UpdateRequest { public int Id { get; set; } public string Name { get; set; } }
これでとりあえずJson形式のRequestは受け取れるようになりました。 次にStartup.csを変更します。ConfigureServicesメソッドのAddControllers()のあとにAddXmlSerializerForrmers()を追加しています。
public void ConfigureServices(IServiceCollection services) { services.AddControllers() .AddXmlSerializerFormatters(); }
これでHttpRequestのBodyがXmlだった場合でもActionの引数に指定した型にBindしてくれます。
実際にAPIを叩いてみました。
OKが返ってきています。 VisualStuidioでデバッグ実行して実際にバインドされていることも確認できました。