ASP.NET Web API 2 でAPIの戻り値として JSON を返却するコードを紹介します。
概要
ASP.NET Web API 2でクラスオブジェクトをWeb APIの戻り値に設定すると、オブジェクトの値をJSON形式で返すことができます。
プログラム例
ファイル作成、配置
空のASP.NET アプリケーションを作成します、作成時にWeb APIのオプションを有効にします。
作成後、コントローラーを作成します。名称は"DefaultController"とします。また、返却値用のクラスを作成します。名称は "MyItem"クラスとします。コントローラーはControllersフォルダ、返却値用のオブジェクトのクラスはModelsフォルダに配置しましたが、このフォルダ以外の配置でも問題ないようです。
コード
返却値用のクラス(MyItem.cs)を実装します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ObjectResultWebApi.Models
{
public class MyItem
{
public string name;
public int count;
public double price;
public string code;
}
}
コントローラーを実装します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace ObjectResultWebApi.Models
{
public class DefaultController : ApiController
{
public MyItem GetItem()
{
MyItem item = new MyItem();
item.name = "ペンギンクッキー";
item.count = 8;
item.price = 280;
item.code = "PC-01W";
return item;
}
}
}
WebApiConfigのコードは変更はせず、生成されたコードをそのまま利用します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace ObjectResultWebApi
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API の設定およびサービス
// Web API ルート
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
解説
DefaultControllerに実装したGetItemメソッドはWeb APIの引数なしの呼び出しがあった際に実行され、戻り値を返します。戻り値はGetItem内で設定した、下記コードの値になります。メソッドの戻り値をMyItemクラスとし、メソッド内で作成して値を代入したインスタンスオブジェクトをメソッドの戻り値とします。
public MyItem GetItem()
{
MyItem item = new MyItem();
item.name = "ペンギンクッキー";
item.count = 8;
item.price = 280;
item.code = "PC-01W";
return item;
}
実行結果
プロジェクトを実行します。ページが存在しないため、下図の Forbidden エラーが表示されます。
(Webアプリけションのルート)/api/Default/
URLにアクセスします。jsonファイルのダウンロードが表示されます。
jsonファイルをダウンロードします。
jsonファイルがダウンロードできました。
ダウンロードしたjsonファイルを開いて内容を確認します。
jsonファイルは以下の内容です。
{
"name":"ペンギンクッキー",
"count":8,
"price":280.0,
"code":"PC-01W"
}
コントローラーのコードに記述して設定した値がAPIの戻り値で返却できていることが確認できます。
Web APIでクラスオブジェクトを戻り値に指定し、JSON形式の戻り値を返すWeb APIを実装できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-08-21
作成日: 2018-08-21