如何编写简单的RESTful PHP API

时间:2016-10-18 23:01:16

标签: php rest api

我是PHP编程的新手,但我正在开发一个需要小型Web服务的iOS应用程序。我想把它变成RESTful,因为我读到了这是要走的路。

那么,有人可以向我解释我将如何做这件事吗?

假设我有一个用户数据库。

我知道有一个好的REST API,为了得到所有用户,我需要调用GET api/users

我不明白的是我如何创建这个?我在我的服务器上创建一个名为api的文件夹和一个名为users的单个php文件,它会为我返回用户吗?或者是名为api的php文件,我将用户作为参数传递?

同样,如果我想获得特定用户该怎么办?

我会做GET api/users/23。但我是否为每个用户创建一个新的php文件并将其命名为用户ID(在本例中为23)?或者我如何将用户23返回到API?

有人可以为我澄清这些吗?

3 个答案:

答案 0 :(得分:1)

你可以参考这个,

API / user.php的

<?php
include("connection.php"); //Connect to database
$response = array();
 if(isSet($_POST['token']))
 {
    $select = mysqli_query($conn,"SELECT * FROM `users`"); //Fetch all the user records
    if($select != false)
    {
        if($select != false && mysqli_num_rows($select) > 0)
        {
            while($rows = mysqli_fetch_array($select))
            {
                $response['status'] = true;
                $response['data'] = print_r($rows,true);
            }
        }
        else
        {
            $response["status"] = false;
        }
    }
    else
    {
        $response["status"] = false;
    }
}
else
{
    $response["status"] = false; //Unauthorized Access
}

echo json_encode($response);
mysqli_close($conn);

?>

API / connection.php

<?php
    $conn = mysqli_connect("HostName","UserName","password","DBName") or die("Some error occurred during connection " . mysqli_error($con));  
?>

答案 1 :(得分:1)

还要考虑使用API​​框架,因为您将遇到框架创建者已经解决的问题。 F.E.看这里:http://www.gajotres.net/best-available-php-restful-micro-frameworks/

答案 2 :(得分:0)

通常,您会将每个请求重定向到主文件index.php(使用.htaccess文件),然后调用&#34;路由器&#34;。

此路由器将查看请求信息(URL和动词,GETPOST,...)并调用您为此请求定义的相应函数。

这意味着您可以自由使用任何架构,而不是以与路线相同的方式组织文件夹。

我建议使用一个简单的框架来处理请求的路由,它应该为您提供了解其工作原理的所有密钥。例如:

最简单的路由器版本只是处理各种情况的条件:

if ($_SERVER['REQUEST_METHOD'] == "GET" && $_SERVER[REQUEST_URI] == "/users") // request is GET /users
{
    // return the list of all users
}
if ($_SERVER['REQUEST_METHOD'] == "GET" && preg_match('#/users/[0-9]+#', $_SERVER[REQUEST_URI])) // request is GET /users/[0-9]+
{
    // return a specific user
}