我是一名全职后端开发人员,刚刚开始为我自己的一些项目学习 Angular。
默认情况下, Angular $http
请求似乎作为 JSON 字符串发送。我目前正在重写 transformRequest
方法以像 jquery 一样对其进行参数化。这样我的后端框架(Phalcon PHP)接收它更方便。
在我选择这条道路之前,以这种方式构建它有什么缺点吗?单元测试或使用第三方模块有任何问题吗?
编辑
澄清一下,Angular 在正文中将 POST 作为 JSON 字符串发送。我使用 jQuery 和其他框架作为表单 URL 发送,例如: 姓名=乔纳森+多伊&年龄=23&公式=a+%2B+b+%3D%3D+13%25%21 http://en.wikipedia.org/wiki/POST_%28HTTP%29#Use_for_submitting_web_forms
这可能是由于内容 header 用表单数据填充了 php 中的 $_POST 全局(我假设);
最佳答案
我建议您坚持使用 JSON 格式并在 JSON 请求正文中发送数据,而不是使用 key=value 参数对。您可以使用 Request::getJsonRawBody()
干净地接收 JSON在菲尔康。
主要区别在于 POST vars 格式允许您发送键=值对的数据。当涉及到更复杂的结构(数组、关联数组、嵌套对象等)时,您将开始遇到必须以某种方式解决的问题。如果您在 POST/PUT 请求正文中发送 JSON 对象,则不会发生这种情况。当然,您还可以在 AngularJS 和 Phalcon 中序列化和反序列化 OOTB。
您应该强烈考虑仅对 GET 参数使用 key=value 参数,对其他所有参数考虑 JSON 数据。显然,您可以混合这两者(我的意思是,将文章的新内容作为带有 JSON 正文的 PUT 请求发送,但在 URL 中指定文章 ID,如 /article?id=123
)。
您可能还着迷于阅读REST API: Request body as JSON or plain POST data? .
关于javascript - 参数化 Angular 请求的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29719441/