我在一家小型初创公司担任网页设计师,我的任务是创建一个PHP程序/文件,每当新用户注册应用程序或执行许多其他事件时,该程序/文件将从我们应用程序的后端服务器接收JSON数据,处理数据并将其发送到我们的CRM(Insightly(。
在设计网站时,我对PHP有相当好的了解,但我从来没有真正使用它来处理这样的数据。我最初的想法是在 Azure 服务器上为每个事件设置一个 .json 文件,并让后端将数据写入其中一个文件。数据以 POST 数据(不是来自表单(的形式出现,我正在使用 php://input 来收集数据并将其写入 .json 文件。然后,Azure 服务器会定期运行我的 PHP 程序来检查文件中是否有数据,如果有,则将数据发送到 Insightly。
但是,与我合作的开发人员希望立即收到Insightly作为HTTP响应生成的新联系人ID/项目ID/等。所以基本上:
- 后端服务器将 JSON 数据发送到服务器上的 .json 文件或 PHP 脚本
- PHP 脚本要么立即读取 .json 文件,要么只是将数据json_decodes到数组中以发送到 Insightly
- Insightly 创建一个新的项目/联系人/组织,并将其创建的 ID 返回给 PHP 脚本
- PHP 脚本将该 ID 作为 HTTP 响应发送回后端
所以我的问题是,我怎样才能让PHP"侦听".json文件以立即运行Insightly操作和/或如何在Insightly更新完成后将HTTP响应发送回后端服务器?真的,最好的方法是什么?任何建议或建议都会有所帮助。
在不涉及太多细节的情况下,您不想使用文件来接收 JSON。让服务器指向你的一个PHP脚本(即JSONhandler.php(。然后,您可以将 JSON 解码为对象,执行需要对其执行的任何操作,然后回显响应。这是 REST API 工作原理的基本示例。
$jsonstr = $_POST["数据输入"];
$jsonObj = json_decode($jsonstr(;
对数据做点什么
回声$id; 其中 ID 由见解代码生成
Azure 服务上的每个 PHP 脚本都可以被视为多个 REST APis 的集合。
假设你使用 Azure Web 应用来托管 PHP 脚本。您可以创建一个 PHP 脚本来处理所有这些操作。
我们模仿名为" handler.php
"的PHP脚本,然后该脚本有一个端点,例如" http://<you_azure_web_app_name>.azurewebsites.net/handler.php
"。您的后端将直接将数据发送到此 URL。
然后你可以像这样创建 PHP 脚本:
<?php
//get post data
$post_data = file_get_contents('php://input');
//convert data from jsonstr to (array) stdclass object
$data = (array) json_decode($post_data);
//handle $data
$handled_data = some_handle_operations($data);
//post your handled data to Insightly and get the id
$response_result = some_post_functions_depends_your_choice($handled_data);
//handle the respone result to get the id (what you want here)
$id = some_operations_to_get_id_from_result($response_result);
//response to your backend
echo $id;
要在PHP中发出HTTP请求,有几个流行的函数。
- 利用梨/HTTP_Request2
- 网址方法
- PHP 流上下文