0

Amazon SES 経由で E メールを送信する Web サービスを作成しています。送信するデータを取り込む実際のアプリケーションからサービス(API)を分離したい。したがって、サービスに送信したいのは、宛先アドレス、件名、およびレンダリングされたメッセージの HTML 本文だけです。この場合のサービスは C# の MVC アクション結果メソッドになる予定で、JSON で情報を投稿したいと考えています。通常、データを Web サービスに投稿する場合、データはかなり小さく簡潔です。

だから私の質問は、このようにフォーマットされたJSONを送信するのではなく、HTMLをWebサービスに送信するより良い方法はありますか? base64でエンコードした方が良いでしょうか?または、これをすべて一緒に行うより良い方法はありますか?

投稿本文。

{
   "to" : "asdasd@email.com",
   "subject":"hello",
   "body":"<html><body><h1>asdasd</h1></body></html>"
}

私のモデルは次のようになります。

public class EmailMessage
{
    public string toAddress { get; set; }
    public string subject { get; set; }
    public string body { get; set; }
}

次に、私のアクションの結果は次のようになります...

 [HttpPost]
 public ActionResult SendEmail(EmailMessage msg)
 {

      //Send an email

 }

これを行うより良い方法はありますか?助けてくれてありがとう。

4

1 に答える 1

0

リクエストとレスポンスのサイズが気になる場合は、GZip サポートを追加できます。

public class CompressAttribute : System.Web.Mvc.ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;

            string acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding)) return;

            acceptEncoding = acceptEncoding.ToUpperInvariant();

            HttpResponseBase response = filterContext.HttpContext.Response;

            if (acceptEncoding.Contains("GZIP") && response.Filter != null)
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE") && response.Filter != null)
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
    }

次に、コントローラーでアクションまたはコントローラー自体に属性を追加します。

[Compress]
public class AccountController : Controller
于 2013-06-06T16:21:40.407 に答える