読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

ASP.NET Web API に関する適当で無責任なメモ

これは完全にメモ書きです。しかも Web API というより System.Net.Http 名前空間に含まれている面白そうなクラスです。

概要

System.Net.Http 名前空間 ()

RFC 2616 で定義されている〜という言葉が多い。つまり HTTP/1.1 のこと。

http://www.ietf.org/rfc/rfc2616.txt

リクエスト

  • HttpRequestMessage
    • HttpRequestMessage
  • HttpMethod
  • HttpRequestHeaders

レスポンス

  • HttpResponseMessage
    • HttpResponseMessage
  • HttpResponseHeaders

コンテント

  • HttpContent
    • FormUrlEncodedContent
    • PushStreamContent
    • ObjectContent
      • ObjectContent
  • HttpContentHeaders

メディアタイプ

  • MediaTypeFormatter
    • JsonMediaTypeFormatter
    • XmlMediaTypeFormatter
  • MediaTypeHeaderValue

非同期処理

public class FooController : ApiController
{
    public async Task<string> Get()
    {
        return await Task.StartNew(() => "ほげ");
    }
}

サーバからのプッシュ

public class FooController : ApiController
{
    public HttpResponseMessage Get(HttpRequestMessage request)
    {
        var response = request.CreateResponse();
        response.Content = new PushStreamContent((stream, content, context) =>
        {
            // ストリームが使えるようになったら呼ばれるので書き込む
        });
        return response;
    }
}