关于通用化的api格式输出,我来说点意见
来源:4-10 玩转中间件处理
hippo417
2020-03-05
代码一:
class school extends BaseController
{
public function index(){
// 获取参数值,并转换后赋值
$UserId = $this->request->param("userid", 1,"intval");
// 如果为空,输出code为1
if (empty($UserId)){
return show(config("status.error"),"参数错误");
}
$modelObj = new SchoolModel();
$results = $modelObj->getUserID($UserId);
$school = [
'code' => 0,
'msg' => "",
'count' => 11,
'data' => $results,
];
return json($school);
// return show(config("status.success"),"",11,$results);
}
}
输出数据后,后台能正常获取到参数:
代码二:
class school extends BaseController
{
public function index(){
// 获取参数值,并转换后赋值
$UserId = $this->request->param("userid", 1,"intval");
// 如果为空,输出code为1
class school extends BaseController
{
public function index(){
// 获取参数值,并转换后赋值
$UserId = $this->request->param("userid", 1,"intval");
// 如果为空,输出code为1
if (empty($UserId)){
return show(config("status.error"),"参数错误");
}
$modelObj = new SchoolModel();
$results = $modelObj->getUserID($UserId);
// $school = [
// 'code' => 0,
// 'msg' => "",
// 'count' => 11,
// 'data' => $results,
// ];
// return json($school);
return show(config("status.success"),"",11,$results);
}
}
输出数据后后台不能正常获取到参数:
两段代码,浏览器显示输出结果一样,但后台网页只有代码一可以获取的参数,代码二不能获取到。摸索了好长时间,终于找到问题了:
function show($status, $message ,$count, $data = [] ,$httpStatus = 404){
$status = [
'code' => $status,
'msg' => $message,
'count' =>$count,
'data' => $data,
];
echo json_encode($status, $httpStatus);
老师给的输出方式是:
return json($status, $httpStatus);
我改成:
echo json_encode($status, $httpStatus);
问题解决了!!!
老师,是故意挖的坑吗?:)
写回答
1回答
-
singwa
2020-03-05
您好。不是的哈。json是 TP内部的 json数据输出方式, 他支持http状态码的传递。
您这个地方传递 httpStatus 是没有任何作用的。
tp内部的json
以及PHP内置的json_encode都行
但是如果你用tp提供的json 你需要在 前端js代码拿到数据的时候需要做一层处理。
可以截图你那边的代码我看看。js代码
012020-03-05
相似问题