我在angularjs app中面临一个非常奇怪的案例。在工厂中,以下代码正常工作:
$http.put(apiBase + 'delete?id='+orderId);
显然连接到api以执行PUT操作(它被称为"删除"这里它实际上只更新记录中的标志)。
但是,当以这种方式编写时,相同的代码不起作用:
$http.put(apiBase + 'delete', {
params: {
id: orderId
}
}
);
这很有趣,因为我在其他一些工厂中使用完全相同的语法来命中类似的API并且它们有效!
答案 0 :(得分:2)
我认为这是因为StringVar
的第二个参数是$http.put()
个对象,而不是data
个对象。您正在传递config
对象作为第二个参数。
你可以尝试:
config
答案 1 :(得分:1)
使用$ http.put时,您不需要将数据包装在config对象中。您可以直接传递数据对象,然后省略第三个参数:
$http.put(apiBase + 'delete', { id: orderId });
您的其他工厂可能使用您问题中所述的语法,因为您正在制作$ http.get或$ http.delete请求。
我发现这种稍微不同的API让各种“快捷方式”方法足够混乱,我几乎认为最好完全避免它们。您可以看到与the documentation的区别,其中get和delete有两个参数:
get(url, [config]);
delete(url, [config]);
并且大多数其他快捷方法都有三个:
post(url, data, [config]);
put(url, data, [config]);
请注意,[config]
对象在该文档页面上进一步定义,该页面定义了“params”属性:
params - {Object。} - 字符串或对象的映射 将使用paramSerializer序列化并作为GET附加 参数。