php - 如何在 slim 框架中将 http 响应状态添加到 rest api

标签 php css json html slim

如何在 slim 框架中将 http 响应状态添加到 rest api。在这段代码中,如果没有找到数据,我必须通过数据库获取值,它将显示 http 状态响应

 <?php
        $app->get('/api/view', function() {
            //call connection file
            require_once('dbconnect.php');
           //array for JSON response

            $query = "select * from firm order by firmId";
            $result = $mysqli->query($query);
           // code node

            while($row = $result->fetch_assoc())
                {
                    // temp user array
                    $data[] = $row;
                }

          if (isset($data))
          {
              header('Content-Type: application/json');
           echo json_encode($data);
          }
        });
        //display single row
      $app->get('/api/view/{firmId}', function($request, $response) {
           require_once('dbconnect.php');
           $firmId = $request->getAttribute('firmId');
          $query = "select * from firm where firmId = $firmId";
          $result = $mysqli->query($query);
          $data[] = $result->fetch_assoc();

          header('Content-Type: application/json');
           echo json_encode($data)."</br>" ."</br>";

      });

最佳答案

我在这里发布了一些获取响应状态的函数和一个回显响应的 api 示例...希望对您有所帮助。

   function verifyRequiredParams($required_fields) {
      $error = false;
      $error_fields = "";
      $request_params = array();
     $request_params = $_REQUEST;
 if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
    $app = \Slim\Slim::getInstance();
    parse_str($app->request()->getBody(), $request_params);
 }
 foreach ($required_fields as $field) {
    if (!isset($request_params[$field]) || 
 strlen(trim($request_params[$field])) <= 0) {
        $error = true;
        $error_fields .= $field . ', ';
    }
}

if ($error) {
    $response = array();
    $app = \Slim\Slim::getInstance();
    $returncode                 =   "3";
    $returnmessage              =   'Some Fields Are Empty, Required 
   field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty';
    $response['returncode']     =   $returncode;
    $response['returnmessage']          =   $returnmessage;
    $response['returndatacount']             =   0;
    $response['returndata']             =   array();
    echoRespnse(400, $response);
    $app->stop();
  }
}


  function echoRespnse($status_code, $response) {
      $app = \Slim\Slim::getInstance();
      $app->status($status_code);
     $app->contentType('application/json');
    echo json_encode($response);
   }

  function authenticate(\Slim\Route $route) {
      $headers = apache_request_headers();
      $response = array();
      $app = \Slim\Slim::getInstance();
   if (isset($headers['BLAuth'])) {
      $db = new BLICKXDbHandler();
      $api_key = $headers['BLAuth'];
      if (!$db->isValidApiKey($api_key)) {
        $returncode                 =   "4";
        $returnmessage              =   "Authentication Fail, Wrong 
        Authorization Header Define";
        $response['returncode']             =   $returncode;
        $response['returnmessage']          =   $returnmessage;
        $response['returndatacount']             =   0;
        $response['returndata']             =   array();
        echoRespnse(200, $response);
        $app->stop();
      } else {
     }
     } else {
            $returncode  =   "4";
            $returnmessage  ="Authentication Fail, No Authorization 
       Header Define";
          $response['returncode']     =   $returncode;
           $response['returnmessage']          =   $returnmessage;
          $response['returndatacount']             =   0;
         $response['returndata']             =   array();
          echoRespnse(200, $response);
          $app->stop();
      }
    }

    $app->post('/getinfo', 'authenticate', function() use ($app) {
       verifyRequiredParams(array('usertype'));
       $usertype       =   $app->request()->post('usertype');
       $response       =   array();
     $db = new BLICKXDbHandler();
    $result         =   array();
    if(isset($usertype) && $usertype=="fr")
    {
       $result = $db->getFranchisedetails();
    }
    else if(isset($usertype) && $usertype=="op")
    {
     $result = $db->getOperatordetails();
   }
     if(count($result)==0)
     {
      $returncode                 =   "1";
      $returnmessage              =   "No Data Found";
      $response['returncode']     =   $returncode;
      $response['returnmessage']          =   $returnmessage;
      $response['returndatacount']             =   0;
      $response['returndata']             =   array();
  }
  else
  {

      $response           =   array();
      $returncode         =   "0";
      $returnmessage      =   "Data Listed Sucessfully";

      $alldata = array();
      $kk=0;
      if(isset($usertype) && $usertype=="fr")
       {
          foreach ($result as $key => $task) {
            $franchise_id           =   $task["franchise_id"];
            $franchise_name         =   $task["franchise_name"];
            $alldata[$kk]['id']     =   $franchise_id;
            $alldata[$kk]['name']   =   $franchise_name;
            $kk++;
        }
    }

关于php - 如何在 slim 框架中将 http 响应状态添加到 rest api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48820572/

相关文章:

PHP PDO - $dbh 和 $sth 代表什么?

css-float - 为什么 css float 与 <ul> 和 <li> 的行为不同?

css - 如何防止长段落破坏您的 CSS 网格 [模板区域]

javascript - 使用 React 漂亮地打印 JSON

javascript - 加载新的 JSON 数据并替换 VueJS 中的旧数据

php - 如何在服务器端将 Base64 字符串读取为文件,而不将其保存在 Web 服务器中,直接通过 PHP?

php - Ajax请求触发提交....为什么?

php - 我们如何在 JQuery Append 函数中运行 If else 语句?

html - 将 css 应用于特定的 <a> 标签

android - 制作动态表格(最佳方法)