在我的项目中,我已经有了使用$ http.post插入所需对象的AngularJS服务,如下所示:
function insertObject(object, callback) {
$http.post(apiUrl, object).success(function (data) {
“object”在相应的AngularJS控制器中设置并发送到我的服务,如:
objectServices.insertObject(object, function (data) {
据此,“对象”通过$ http post request body发送。我需要的是在$ http请求中发送一个额外的变量。实际上,这个变量应该是控制器工作的URL(路由)。
我无法更改此对象结构(将新属性附加到其中,这将保存URL信息等),因为$http.post(apiUrl, object)
匹配相应的后端API Controller方法,该方法将此对象精确地作为参数(此对象是实体)。
我试过这样的事情:
声明将保存网址信息的变量:
var url = window.location;
并将其附加到$ http.post标题,如:
$http.defaults.headers.common["currentUrl"]= url;
其中“currentUrl”应该是键,url是值。
还尝试了类似的事情:
$http.post(apiUrl, object, headers: { 'currentUrl': url })
在后端,在相应的API控制器内部HttpResponseMessage方法尝试从请求标头中提取它:
Request.Headers.Single(x => x.Key == "currentUrl").ToString();
但它不起作用。请问,有人可以解释如何在http post请求中发送自定义数据并告诉我我的尝试有什么问题吗?
编辑:后端的Request.Header内容为:
答案 0 :(得分:0)
附加变量时:
$http.defaults.headers.post.currentUrl = url;
拨打电话时,你错过了大括号:
$http.post(apiUrl, object, {headers: { 'currentUrl': url }})