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/

相关文章:

rest - 在 Steam Web API 上设置语言

java - 如何解决 Java Spring 中日期的一日偏移问题

java - SSLEngine:在成功握手后展开时无效的 TLS 填充数据

c# - 任何人都有示例代码,用于将一个网站的 "chunked"HTTP 流式下载直接上传到单独的 Web 服务器?

java - 如何在解析为 dto 之前获取 http Jersey 响应状态?

android - 如何在android sdk中从图库中获取图像并将其显示到屏幕上

jquery 使用智能投票插件进行轮询

algorithm - Restful : Using POST to execute algorithms

java - 如何引导 Jersey REST 服务服务器?

python - 通过http python发送图像