Web API を利用していると、簡単に レスポンスヘッダー を調整することができます。
ほとんどは HttpResponseMessage クラス の設定で処理を行います。
以下に、ケース別の具体例を掲載します。
目次
Content-Type の書き換え
何も設定しない場合、application/json になるので、ここでは text/plain に設定する例を掲載します。
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;
}
}
}
ステータスコード の書き換え
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, "エラーメッセージ");
}
}
}
カスタムレスポンスヘッダー
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;
}
}
}
今回、以下のサイトを参考にしました。
- MSDN - HttpResponse クラス
- MSDN - HttpResponseMessage クラス
- Stack Overflow - Is there a way to force ASP.NET Web API to return plain text?
- Stack Overflow - Add Header To Web API Actions on Controller
- Stack Overflow - Returning http status code from ASP.NET MVC 4 Web Api controller
- Stack Overflow - mvc 4 web api add custom response http header
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!