我只想在codeigniter的标头中缺少令牌字段时返回JSON错误响应

时间:2018-08-18 06:12:34

标签: php json api codeigniter

只要令牌丢失,只要我的Api被调用,它就应该返回一个json响应“令牌是必需的” 我在标题中获得令牌 让我用示例代码进行解释:

$headers = apache_request_headers();
$token = $headers['User-Token'];
if(isset($token)){
  $user_details = $this->user_basic_model->get_user_by_token($token);
  if (!empty($user_details))
  {
   $data = $this->fare_model->get_all_fare();

   if (empty($data)) {
       $arr = array('msg' => 'Error!', 'status_code' => 404);
       echo json_encode($arr);
    } 
   else {
       $success_array = array('msg' => 'Success!', 'status_code' => 200);
       echo json_encode(array_merge($data, $success_array));
      }
  }
  else
  {
   $arr = array('success' => 'false', 'msg' => 'Unauthorize Request', 
   'status_code' => 401);
   echo json_encode($arr);
  }
 }
 else
  {
   $arr = array('success' => 'false', 'msg' => 'Token is required', 
   'status_code' => 401);
   echo json_encode($arr);
  }

在这种情况下,当我没有使用邮递员在标头中发送User-Token字段时,我得到了正确的响应,但是使用该响应,我得到了未定义索引“ User-token”的错误 我不希望显示此错误

1 个答案:

答案 0 :(得分:0)

只需稍微修改一下代码即可。

if (isset($headers['User-Token'])) {
    $token = $headers['User-Token'];
    if (empty($token)) {
        //your code
    } else {
        $arr = array('success' => 'false', 'msg' => 'Token is required',
            'status_code' => 401);
        echo json_encode($arr);
        exit();
    }
} else {
    $arr = array('success' => 'false', 'msg' => 'Token is required',
        'status_code' => 401);
    echo json_encode($arr);
    exit();
}