ひでぼ~blog

C#ときどきゲーム

ASP.NET Core APIでXML形式のRequestを受け取る

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を叩いてみました。

f:id:hideb3:20200119180301p:plain
VSCode拡張機能RestClientを使ってAPIを叩いた結果

OKが返ってきています。 VisualStuidioでデバッグ実行して実際にバインドされていることも確認できました。

f:id:hideb3:20200119180527p:plain
サーバ側でRequestがBindされている様子

参考サイト

ASP.NET Core Web API の応答データの書式設定 | Microsoft Docs