rest - 在 REST API 中,要获取资源,我应该在 url 中包含资源 ID 吗?

标签 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 请求的 header 中?还是这不是我应该担心的事情?

最佳答案

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

关于rest - 在 REST API 中,要获取资源,我应该在 url 中包含资源 ID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075162/

相关文章:

jquery - $.get(u,d,c ,"JSON") 与 $.getJSON(u,d,c)

ajax - 如何在 Apache 中为 REST 设置代理

rest - 使用不受支持的方法的请求的 CORS 响应

asp.net - WCF 服务契约将被 XML 和 Json 序列化

php - PHP GET参数自动urldecode

javascript - 未收到来自 Express 服务器的 GET 响应

android - 为 Android 应用程序和 Django 数据库制作 RESTful http 服务?

rest - 经过身份验证的 REST api 的 HTTP 缓存

android - 如何在 Android 上的 HttpPost 中发送 unicode 字符

Angular 2 - 当返回一个空的可观察对象时,使用平面图的同步 http 调用不执行下一个调用