我正在创建一个通过Amazon SES发送电子邮件的Web服务。我想将服务(API)与将要发送数据的实际应用程序分开。所以我想要发送的服务是消息的地址,主题行和呈现的html主体。在这种情况下,服务将成为C#中的MVC动作结果方法,我想在JSON中发布信息。通常,当我将数据发布到Web服务时,数据非常小而且简洁。
所以我的问题是,有没有更好的方法将html提交给webservice,而不是像这样发送格式化的JSON? 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
}
有更好的方法吗?在此先感谢您的帮助。
答案 0 :(得分: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