如何创建谷歌应用程序引擎PHP Restful API服务


How to create a Google App Engine PHP Restful API service?

我正在尝试使用PHP在Google App Engine中创建一个Restful API页面,允许外部实体向其发送数据。我首先在Chrome扩展"Advanced Rest Client"中测试所有内容,该扩展接受数据并返回响应。然后我创建了下面的html,这样我就可以用Javascript、来测试它

<html><head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>    
</head>
<body>
<span id="response"></span>
<script>
  var url = "https://www.website.com/api/"
  var data = { "test":"success", };
  var response = function(data){ $("#response").html(data); };
  $.post(url, data, response);
</script>
</body></html>

服务器被设置为返回"成功"或"失败"的PHP回声响应。

  1. 我在谷歌应用引擎中尝试了上面的脚本,它没有问题,它接受了数据并返回了响应。

  2. 然后我在000webhost.com上创建了一个网页,并在那里测试了代码,它接受了数据,但不会返回响应。

  3. 然后,我将代码发送给需要发送数据的人,当他们尝试时,代码显示他们未经授权,不接受任何数据。

  4. 然后我尝试了以下网站,https://resttesttest.com/,我的服务器接受数据,但我没有返回响应,而是收到以下错误,

哦,不!Javascript返回HTTP 0错误。一个常见的原因是可能发生的情况是,您从在回答

我尝试将以下内容添加到我的app.yaml中,但没有成功,

http_headers:
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Methods: *

有什么想法吗?

是以下原因导致问题,

http_headers:
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Methods: *

谷歌应用程序引擎不接受这些参数,所以我只是在我的PHP中使用了以下行,

header( 'Access-Control-Allow-Origin: *' );

它现在起作用了。

在app.yaml中,http_headers必须符合handlers中的特定处理程序规范,而不是使用它时的"独立"规范。

文档中建议的示例具体为:

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: '*'

当然,您也可以将它应用于其他类型的处理程序,而不仅仅是像示例中那样的静态处理程序。