ASP.NET Web API で レスポンスヘッダー の設定

1 件のコメント

Web API を利用していると、簡単に レスポンスヘッダー を調整することができます。 ほとんどは HttpResponseMessage クラス の設定で処理を行います。 以下に、ケース別の具体例を掲載します。

目次

Content-Type の書き換え

何も設定しない場合、application/json になるので、ここでは text/plain に設定する例を掲載します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace WebService
{
    using System.Text;
    using System.Web;
    using System.Web.Http;
 
    public class SampleController : ApiController
    {
        public string Get()
        {
            var response = this.Request.CreateResponse(HttpStatusCode.OK);
 
            response.Content = new StringContent("Hello World.", Encoding.UTF8, "text/plain");
 
            return response;
        }
    }
}

ステータスコード の書き換え

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace WebService
{
    using System.Web;
    using System.Web.Http;
 
        public HttpResponseMessage Post()
        {
            try
            {
                // 何か処理
 
                return this.Request.CreateResponse(HttpStatusCode.OK);
            }
            catch
            {
                return this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "エラーメッセージ");
            }
        }
}

カスタムレスポンスヘッダー

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace WebService
{
    using System.Web;
    using System.Web.Http;
 
    public class SampleController : ApiController
    {
        public HttpResponseMessage Options()
        {
            var response = this.Request.CreateResponse(HttpStatusCode.OK);
 
            response.Headers.Add("Access-Control-Allow-Origin", "*");
            response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
            response.Headers.Add("Access-Control-Max-Age", "1728000");
 
            return response;
        }
    }
}

今回、以下のサイトを参考にしました。

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!

 

  1. 有用なTIPSの共有ありがとうございます。
    getの方のサンプルコード、戻り値の型がstringになっていますが、post同様HttpResponseMessageが正しいと思いますが、いかがでしょうか?

    返信削除