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; } } } |
今回、以下のサイトを参考にしました。
- 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 の フォロー」 お願いします!!