使用 REST API 从表中获取数据

发布于 2024-12-10 21:17:06 字数 835 浏览 0 评论 0原文

我正在使用 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();
 ?>

我正在使用此网址尝试此功能:- 192.168.1.101/hello/:kuntal

我需要获取名称值为 kuntal 但在函数中我获取的名称值为 :kuntal 所以请告诉我如何才能删除名称前的 :(冒号)。

是另一种方法来做到这一点。

如果您了解制作 REST API 的 slim 框架,请给我您的建议。 先感谢您。

I am designing REST api using Slim framework. I am using database mySql. and i am designing this API in php.

I am trying to fetch data about student from my table.

I am trying like this:-

<?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();
 ?>

I am trying this function using this url:-
192.168.1.101/hello/:kuntal

i need to get value of name as kuntal but in function i am getting value of name as :kuntal so please tell me how can i remove this :(colon) before the name.

Is another way to do this.

Please give me your suggestion if you are aware about slim framework to make REST API.
Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我一向站在原地 2024-12-17 21:17:06

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

Try this url: 192.168.1.101/hello/kuntal
i think this will definitely work for your code.

无人问我粥可暖 2024-12-17 21:17:06

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 一样,少即是多。这就是 Paris 的代码的样子。

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&计数=10

这有帮助。非常酷的东西。有人给我反馈,让我知道我的想法是否正确。我也还在学习中。

Slim is a really great framework. Before I started using it I had zero experience with frameworks, REST, understanding HTTP... I'm still a noob but Slim makes it fun.

Answer 1:

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

Answer 2:

Might I add that you check out Idiorm/Paris for your database needs? In the same philosophy as Slim, less is more. This is what code might look like with Paris.

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
});

Although, question (and maybe someone who knows more about REST can answer). Is that uri really a good one? From what I understand about REST, we want to point people to resources. Nouns I guess. I'm not sure what Hello would really mean in REST context. Why not make the resource user or friend with an ID as a 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);
}

You can then process that information, package it with a hello greeting, whatever the client is expecting. You can pass extra information like name into the parameters like so.

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

Hope this helps. Very cool stuff. And someone give me feedback to let me know if my thinking is on the right page. I'm still learning too.

萌梦深 2024-12-17 21:17:06
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**********************/
    }
    ?>
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**********************/
    }
    ?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文