如何使用&到一个web api

本文关键字:一个 web api 何使用 | 更新日期: 2023-09-27 17:52:43

我有一个问题,张贴内容&比如"M&A是趋势....",消息只停在M

MVC Web API

  [HttpPost]
        public IHttpActionResult Post([FromUri] CommentModel param)
        {}
    public class CommentModel
    {       
        public int Id { get; set; }
        public string Message { get; set; }
        ...
    }

Web Api配置:

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

从angularJS调用:

 var message = encodeURI($scope.message);   
 var request = $http.post('api/comment/?message=' + message);
....

如何使用&到一个web api

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

也就是说,你的API控制器的方法应该如下所示:
public IHttpActionResult Post(CommentModel param)

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

最后,如果需要将&号作为资源uri中的数据或url格式编码的数据发送,则需要对它们进行编码,因为&号在此上下文中具有特定的含义(它们是键值对分隔符)。如果你正在执行来自HTML5应用程序的请求,你可以使用encodeURIComponent(...)函数编码你的参数,而在。net中你可以使用Uri.EscapeDataString

POST动词意味着创建资源,并且您将资源数据作为实体发送(它可以是JSON, XML, url形式编码,或其他任何形式,但理想情况下不是作为URI中的查询字符串)。

在发送前对内容进行编码。

M&A is the trend....

编码后如下所示:

M&A is the trend....