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 の フォロー」 お願いします!!