如何使用&发布内容到网络API?

时间:2015-06-02 09:50:06

标签: c# asp.net-mvc angularjs asp.net-web-api

发布带有&的内容时遇到问题喜欢“M& A是趋势......”,消息只停在M

MVC Web API

Viewcontroller

Web Api配置:

  [HttpPost]
        public IHttpActionResult Post([FromUri] CommentModel param)
        {}

    public class CommentModel
    {       
        public int Id { get; set; }
        public string Message { get; set; }
        ...
    }

从angularJS调用它:

config.Routes.MapHttpRoute(
               name: "DefaultApi",
               routeTemplate: "api/{controller}/{id}",
               defaults: new { id = RouteParameter.Optional }

           );

2 个答案:

答案 0 :(得分:2)

发送前对内容进行编码。

M&A is the trend....

编码后看起来像这样:

M&A is the trend....

答案 1 :(得分:1)

理想情况下,当您执行HTTP / POST时,您将数据作为实体发送,作为请求正文的一部分(不在URI中)。

也就是说,您的API控制器方法应如下所示:

public IHttpActionResult Post(CommentModel param)

你的HTTP / POST请求都应该包含一个Content-type: application/json标头和一个JSON实体作为请求体的一部分(再次,不在URI !!!!)。

最后,如果您需要在您的资源URI或url-form编码数据中发送&符号作为数据,您需要对它们进行编码,因为&符号在此上下文中具有特定含义(它们是键值对分隔器)。如果您正在执行来自HTML5应用的请求,则可以使用Reference功能对参数进行编码,在.NET中,您可以使用encodeURIComponent(...)

POST动词是指创建资源,并将资源数据作为实体发送(可以是JSON,XML,url-form-encoded等等,但理想情况下不在URI中作为查询字符串)。