【问题标题】:fetch data from table using REST API使用 REST API 从表中获取数据
【发布时间】:2019-04-15 18:51:55
【问题描述】:

我正在使用 Slim 框架设计 REST api。我正在使用数据库 mySql。我正在用 php 设计这个 API。

我正在尝试从我的表中获取有关学生的数据。

我正在尝试这样:-

<?php
header('Content-type: application/json');
// Include the Slim library
require 'Slim/Slim.php';
// Instantiate the Slim class
$app = new Slim();
// Create a GET-based route
$app->get('/hello/:name', 'hello');

  function hello($name)
  {
     // here is code to access detail of $name 
     echo $name
     // how can i get detail if i have value of name=:kuntal  not name=kuntal
  }

  // Ready the routes and run the application
   $app->run();
 ?>

我正在使用这个 url 尝试这个功能:- 192.168.1.101/hello/:kuntal

我需要将名称的值作为 kuntal 但在函数中我将名称的值作为 :kuntal 所以请告诉我如何删除它:(冒号) 在名称之前。

这是另一种方法。

如果您知道制作 REST API 的苗条框架,请给我您的建议。 提前谢谢你。

【问题讨论】:

    标签: php rest slim


    【解决方案1】:

    试试这个网址:192.168.1.101/hello/kuntal 我认为这肯定适用于您的代码。

    【讨论】:

      【解决方案2】:

      Slim 是一个非常棒的框架。在我开始使用它之前,我在框架、REST、理解 HTTP 方面的经验为零……我仍然是个菜鸟,但 Slim 让它变得有趣。

      答案 1:

      $app->get('/hello/:name', function($name) use ($app) {
          // Your mySQL code here
          // Process that information into output JSON?
          // echo json_encode($array);
      });
      

      答案 2:

      我可以补充一下,您可以查看Idiorm/Paris 来满足您的数据库需求吗?在与 Slim 相同的理念中,少即是多。这就是巴黎代码的样子。

      class Friend extends Model {}
      
      $app->get('/hello/:name', function($name) use ($app) {
      
          $friend = Model::factory('Friend')->find_many($name);  // Paris: all rows with name
          $friendAry = $friend->as_array('id', 'name');
      
          $response = $app->response();    // Slim Response object at work
          $response['Content-Type'] = 'application/json';
      
          echo json_encode($friendAry);    // Output
      });
      

      虽然,问题(也许更了解 REST 的人可以回答)。那个uri真的很好吗?根据我对 REST 的了解,我们希望将人们指向资源。我猜是名词。我不确定 Hello 在 REST 上下文中的真正含义。为什么不将具有 ID 的资源用户或朋友设为 slug?

      $app->get('/friend/:id', function($id) use ($app) {
          // Returns the friend with unique id
          $friend = Model::factory('Friend')->find_one($id);  // Name is already part of obj
          $friendAry = $friend->as_array('id', 'name');
          echo json_encode($friendAry);
      }
      

      然后,您可以处理该信息,将其与问候语打包在一起,无论客户期望什么。您可以将名称等额外信息传递给参数。

      http://search.twitter.com/search?q=potato&count=10

      希望这会有所帮助。很酷的东西。有人给我反馈,让我知道我的想法是否在正确的页面上。我也在学习。

      【讨论】:

        【解决方案3】:
        enter code here
            <?php
            error_reporting('E_NOTICE ^ E_ALL');
            include_once 'api_function.php';
            $con = new DB_con();
            function getCurrentURL()
            {
                $currentURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
                $currentURL .= $_SERVER["SERVER_NAME"];
        
                if($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443")
                {
                    $currentURL .= ":".$_SERVER["SERVER_PORT"];
                } 
        
                    $currentURL .= $_SERVER["REQUEST_URI"];
                return $currentURL;
            }
        
            if($_POST['action']!="")
            {
            $action = $_POST['action'];
        
            }
            else
            {
            header("Content-type: application/json; charset=iso-8859-1");
            $inputdata = file_get_contents('php://input');
            $data = json_decode($inputdata, TRUE);
            $action = $data['action'];
            }
            /**********************select Detail API Starts here**********************/
            if($action == 'select')
            {
                $insert = $con->select("table_name",$data);
        
                 $msg = array("result" => $insert);
        
                     header('content-type: application/json');
                     echo json_encode($msg,true);
            }
            /**********************delete Detail API Ends here************************/
           /*2nd file api_function.php*/
            error_reporting('E_NOTICE ^ E_ALL');
            define('DB_SERVER', 'localhost');
            define('DB_USER', 'username');
            define('DB_PASS', 'password');
            define('DB_NAME', 'db_name');
            class DB_con {
                protected $conn;
                function __construct() {
                  $this->conn = mysqli_connec`enter code here`t(DB_SERVER, DB_USER, DB_PASS, DB_NAME) or die(mysqli_connection_error($this->conn));
                    //mysql_select_db(DB_NAME, $conn);
                }
            /**********************select API Ends here**********************/
            public function select($ssTableName, $asFields) {
                    if (strcmp($asFields['action'], "select") == 0) {
        
        
                        if ($asFields['id'] != '') {
                        $query_checklogin = mysqli_query($this->conn, "delete from  $ssTableName  where id='".$asFields['id']."'")or die(mysqli_error($this->conn));
                       if ($query_checklogin != '') {
                             $msg = array('msg' => 'succesfully', 'statuscode' => '201');
                            return $msg;
        
                                }
                        } else {
                            $deta = array();
                            $select = mysqli_query($this->conn, "SELECT * from $ssTableName ")or die(mysqli_error($this->conn)); 
                            while($row = mysqli_fetch_assoc($select)){
                                array_push($deta,$row);
        
                            }
                             $msg = array('msg' => 'Record does not exist', 'statuscode' => '202', 'detail'=>$deta);
        
                             return $msg;
                        }
                    } else {
                        $msg = array('msg' => 'Something Error','statuscode' => '203');
                        return $msg;
                    }
                }
            /********************** API Ends here**********************/
            }
            ?>
        

        【讨论】:

        • 您能解释一下您的代码的作用以及它如何帮助解决相关问题吗?
        猜你喜欢
        • 2023-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多