我正在学习如何使用PHP和Slim Framework构建API,我进行了一个名为“数据”的测试以获取数组:
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: X-Requested-With");
header('Content-Type: text/html; charset=utf-8');
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
error_reporting(1);
require '../../slim/vendor/autoload.php';
$app = new \Slim\App;
function response($status_code, $response) {
$app = \Slim\App::getInstance();
$app->status($status_code);
$app->contentType('application/json');
return json_encode($response);
}
$app->get('/data', function () {
$response = array();
$data=array(
array('Foo'=>'Foo', 'Bar'=>'Bar'),
array('Lorem'=>'Ipsum', 'Dolor'=>'Sit Amet')
);
$response["error"] = false;
$response["message"] = "datas: " . count($data);
$response["data"] = $data;
return response(200, $response);
});
当我使用/ data调用api时,状态为200空响应。
这是网址:http://sandboxweb.bailac.net/gts_benja/api/v1/data
出什么问题了,我需要做些什么来获得阵列?
答案 0 :(得分:0)
不要echo
,而是return
:
function response($status_code, $response) {
$app = \Slim\App::getInstance();
$app->status($status_code);
$app->contentType('application/json');
return json_encode($response);
}
然后在您的处理函数中:
return response(200, $response);
答案 1 :(得分:0)
好吧,我终于明白了,Slim 3需要返回一个苗条的对象(例如body,write和withJson),以下代码对我有用:
$app->get('/data', function ($request, $response){
$data=array(
array('Foo'=>'Foo', 'Bar'=>'Bar'),
array('Lorem'=>'Ipsum', 'Dolor'=>'Sit Amet')
);
return $response->withJson($data);
});
以下返回方式也适用于我:
return $response->body(json_encode($data));
return $response->write(json_encode($data));
我更喜欢使用withJson
方法来避免使用json_encode
。
谢谢Alex Howansky的帮助!