我正在尝试使用新元素找到更新服务器上文件的最佳方法。我试着查看http post / put但我收到错误并且不确定如何解决这个问题。 我的http get方法工作正常,所以这不是环境问题。
基于这里的评论是添加信息,我也更正了json文件格式。
开发环境: Visual Studio 2013,.net 4.5,iis
json数据文件位于Visual Studio解决方案下的其中一个文件夹中。 但是我只使用角度功能来开发这个单页应用程序,所以到目前为止我的代码中没有asp.net功能。 我必须添加以访问解决方案中的json文件。
我为所有者提供了一个简单的汽车应用程序,它使用http get:
从文件源加载以下数组 owners: [{
"name": "name1",
"age": 29,
"cars": [
{
"carmodel": "tyota",
"make": 2000
},
{
"carmodel": "ford",
"make": 2001
}
]
},
{
"name": "person1",
"age": 50,
"cars": [
{
"carmodel": "ford",
"make": 2011
}
]
}
]
来自UI的我得到一个新的汽车对象说“person1”
car: {
"carmodel": "BMW",
"make": 2015
}
我想使用httppost或任何其他最佳实践方法将其添加到文件中。
我有一个保存函数,它会抛出错误:405(方法不允许)
$scope.save = function(owner, car, $http)
{
$scope.owners[1].cars.push(car);
// above is hard coded, how can filter owners with owner object?
$http.post('url',$scope.owners);
}
我想知道服务器上的最佳实践更新文件是什么。对此的任何帮助都将不胜感激。
答案 0 :(得分:0)
首先,您的JSON不正确,因为您正在定义具有重复键/变量的所有者对象。我想你想让车主就像你的车一样。
如果我们谈论的是最佳做法,我建议您不要在服务器上保存文件并使用POST请求进行更新,因为这会允许任何人向您的服务器发送邮件并弄乱您的文件。我会改为使用数据库,或者只是在服务器运行时将JSON保留在内存中。要研究的数据库包括MySQL和MongoDB。它们非常容易获得,并且有很多社区支持。
为了更好地理解您的问题,我们需要知道您使用哪种工具/技术来提供此端点。 (Node / .NET / etc。)了解操作系统也很有帮助,但不一定重要。
答案 1 :(得分:0)
理想情况下,所有者应该是一个对象数组,如:
owners: [{
"name": "name1",
"age": 29,
"cars": [
{
"carmodel": "tyota",
"make": 2000
},{
"carmodel": "ford",
"make": 2001
}]
}, {
"name": "person1",
"age": 50,
"cars": [
{
"carmodel": "ford",
"make": 2011
}]
}];
然后我们假设您需要更新名为person1
的人的详细信息,在列表中添加新车,请执行以下操作:
car = {“carmodel”:“anymodel”,“make”:2012}; $ scope.owners [1] .cars.push(汽车); $ http.post(url,$ scope.owners);
此外,必须遵循RESTful APIS最佳实践并使用PATCH更新任何值
每个所有者都可以拥有不同的端点,例如/owner/:id
然后只需$http({method:'PATCH', url:'/owner/1', data:data})
答案 2 :(得分:0)
通过启用CORS解决了这个问题。这是另一个stackoverflow问题的链接: jQuery .ajax() POST Request throws 405 (Method Not Allowed) on RESTful WCF