2011-05-26 13 views
3

我正在构建一个API,并希望Ajax能够与它交互。该API需要允许插入,更新和删除数据。通过GET允许这些操作是否是一个好主意?API - 使用GET来添加,编辑和删除?

例如:http://api.domain.com/insert_person/?name=joe

我原来的计划方式,用得到我“获得”的方法(基本上,只是一个简单的数据库查询)和POST的添加,编辑和删除。问题是JS同源策略,它会使Ajax难以与我的API交互。有一个用于GET的jQuery解决方法(通过JSONP)。

对此提出建议?

回答

5

一句话:NO

GET应始终只用于检索信息,应该不会有副作用,永远。

这是一个最佳实践,涉及到每个Web应用程序,并且与动词的意图以及现有软件如何表现行为有关。

+0

您对使用POST进行插入,更新和删除有什么看法? – StackOverflowNewbie 2011-05-26 04:30:27

+0

这几乎是大多数浏览器的唯一选择,尽管现代开始​​支持PUT和DELETE动词。一般来说,遵循动词是一个好主意,除非你有阻止它的约束,例如http://en.wikipedia.org/wiki/Representational_State_Transfer – Paul 2011-05-26 04:34:27

1

如果您试图绕过相同的原产地政策,通过JSONP GET是唯一可能的前端解决方案。如果你已经控制了后端,你可以设置一个与页面位于同一域的代理服务,但是可以在API服务中进行中继。

如果您打算继续使用JSONP GET路径,请确保您阅读了XSS和CSRF。

+0

你能详细介绍一下代理服务吗?我不知道如何去做。谢谢。 – StackOverflowNewbie 2011-05-26 04:32:19

1

添加另一层来处理您的代码并与您的数据库(不同的域)进行交互。

你仍然会使用POST,你可以在服务器端的数据库的请求,用什么都语言你用,例如PHP的工作将使用卷曲。(制作要求不同的域)

如果你允许使用get与你的数据库进行交互,那么任何人都可以简单地键入他们想要的命令,所以是避免它。

相关问题