PHP 和基本的 RESTful 服务;GET 请求所有记录与一条记录


PHP and basic RESTful services; GET requesting all records vs one record

我的PHP类有一个涉及RESTful服务的项目,我们在其中设置了一个基本服务,如下所示:

$request = $_SERVER["REQUEST_METHOD"];
switch($request) {
    case 'GET':
        $user = $acctReader->read($_GET["username"], $_GET["password"]);
        if (isset($_GET["id"]) && $user == true) {
            // echo method to return single record from db after validating that $user is an account in a separate table
        } elseif (!isset($_GET["id"] && $user == true) {
            // echo method to return ALL records from db
        }
    case 'POST':
    case 'PUT':
    case 'DELETE':
    default
}

我正在让 GET 响应用户验证,这样如果他们输入有效的用户名/密码但没有明确请求单个 ID,他们应该看到所有记录
这是我的html的一部分:

<form action="TaskService.php" method="GET">
        <label for="username">Username</label>
        <input type="text" name="username" id="username" required/><br />
        <label for="password">Password</label>
        <input type="password" name="password" id="password" required/><br />
        <label for="id">Task ID</label>
        <input type="text" name="id" id="id" placeholder="optional"/>
        <input type="submit" name="getTask" value="GET TASK"/>
</form>

能够验证我的第一个条件(输入用户名、pw 和 id)是否返回一个值。 但是,当我不传入 id 时,我很难让它给我所有记录。
关于我应该在哪里进行更改的任何想法?

即使

$_GET["id"]为空,它也将被设置。你将不得不我们

if (!empty($_GET["id"]) && $user == true) {
    // echo method to return single record from db after validating that $user is an account in a separate table
} else {
    // echo method to return ALL records from db
}

if (isset($_GET["id"]) && $_GET["id"] != '' && $user == true) {
    // echo method to return single record from db after validating that $user is an account in a separate table
} else {
    // echo method to return ALL records from db
}

但请注意,当字段可能包含时,不要使用empty()

    0
  • (0 作为整数)
  • 0.0(0 作为浮点数)
  • "0"(0 作为字符串)

因为这些都被认为是空的

查看手册