在REST API中,为了获取资源,我应该在URL中包含资源ID吗?

时间:2015-06-26 13:58:38

标签: rest http get

我正在尝试创建一个REST API,用于在我的数据库中创建和检索文件。我以下的教程使用以下方法来检索单个文件:

$app->get('/file/:file_id', 'authenticate', function($file_id) {
        global $user_id;
        $response = array();
        $db = new DbHandler();

        // fetch file
        $result = $db->getFile($file_id, $user_id);

        if ($result != NULL) {
            $response["error"] = false;
            $response["id"] = $result["id"];
            $response["file"] = $result["fileLocation"];
            $response["status"] = $result["status"];
            $response["createdAt"] = $result["created_at"];
            echoRespnse(200, $response);
        } else {
            $response["error"] = true;
            $response["message"] = "The requested resource doesn't exist";
            echoRespnse(404, $response);
        }
    });

他们在这里使用HTTP GET方法并在URL中指定文件ID,这样做是否可以,安全明智?使用POST并在请求正文中隐藏文件ID会不会更安全,或者它们是否应该将文件ID放在带有GET请求的标头中?或者这不是我应该担心的事情?

2 个答案:

答案 0 :(得分:1)

在REST中,post方法用于创建新资源而不是获取它。 Get方法用于获取资源,您需要指定ID以确定特定资源。通过URL传递它是一种常见的做法。您可以随机生成此ID,以便更难猜测。

答案 1 :(得分:1)

正如Opal所说,ID用于识别资源。如果您不确定是否已阅读此内容 - http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post