RealPath:
WebPath:
2016/11/08 17:47 (JST) 更新
REST API >>

API が出力する各種データ

Contents

前のページ で示しましたが、ApiController のアクションが返した値は 適切なフォーマット に変換された応答となります。

ここでは ApiController の Get メソッドの戻り値を変えることにより、様々なデータ構造を API 応答として返す例を示します。

配列の出力

ValuesController.cs

public class ValuesController : ApiController
{
    public IEnumerable<string> Get()
    {
        return new string[] { "hoge", "fuga" };
    }
}

応答値

[
    "hoge",
    "fuga"
]

クラス構造の出力

ValuesController.cs

public class ValuesController : ApiController
{
    class Hoge
    {
        public string Result { get; set; }
        public string Info { get; set; }
        public int Score { get; set; }
        public bool Flag { get; set; }
    }
    public object Get()
    {
        return new Hoge
        {
            Result = "OK",
            Info = "Hello\nWorld",
            Score = 5000,
            Flag = true
        };
    }
}

出力結果

{
    "Result": "OK",
    "Info": "Hello\nWorld",
    "Score": 5000,
    "Flag": true
}

連想配列の出力

ValuesController.cs

public class ValuesController : ApiController
{
    public object Get()
    {
        Dictionary<string, object> ret = new Dictionary<string, object>();
        ret["Hoge"] = "AAA";
        ret["Fuga"] = "( ˘ω˘)";
        ret["Num"] = 123;
        return ret;
    }
}

出力結果

{
    "Hoge": "AAA",
    "Fuga": "( ˘ω˘)",
    "Num": 123
}

ネストした構造の出力

ValuesController.cs

public class ValuesController : ApiController
{
    class Hoge
    {
        public string Result { get; set; }
        public string Info { get; set; }
        public int Score { get; set; }
        public bool Flag { get; set; }
    }
    public object Get()
    {
        Dictionary<string, object> ret = new Dictionary<string, object>();
        ret["Fuga"] = "( ˘ω˘)";
        ret["Hoge"] = new Hoge
        {
            Result = "OK",
            Info = "Hello\nWorld",
            Score = 5000,
            Flag = true
        };
        ret["MyList"] = new int[] { 10, 20, 100, -1, 3 };
        return ret;
    }
}

出力結果

{
    "Fuga": "( ˘ω˘)",
    "Hoge": {
        "Result": "OK",
        "Info": "Hello\nWorld",
        "Score": 5000,
        "Flag": true
    },
    "MyList": [
        10,
        20,
        100,
        -1,
        3
    ]
}

dynamic の出力

ValuesController.cs

using using System.Dynamic;
....
public class ValuesController : ApiController
{
    public object Get()
    {
        dynamic ret = new ExpandoObject();
        ret.Abc = "xxx";
        ret.Def = "yyy";
        ret.MyList = new int[] { 9, 8, 100 };
        return ret;
    }
}

出力結果

{
    "Abc": "xxx",
    "Def": "yyy",
    "MyList": [
        9,
        8,
        100
    ]
}