gpt4 book ai didi

java - 当 ID 是 URL 时的 API REST

转载 作者:行者123 更新时间:2023-11-30 01:55:15 25 4
gpt4 key购买 nike

我正在开发 API REST,但遇到了以下问题:在某些情况下,我的资源 ID 是 URL。

该 API 可用于 ID 为 UUID 格式的软件和文件系统,其中识别资源的唯一方法是使用其路径。

因此,为了检索资源,我使用如下 GET 语句:-http://localhost/files/ {id}

当我检索存储在软件数据库中的文档时,{id}​​类似于“2ab89005-b938-46c8-9d22-3a12a3c40672”,但是当文档位于文件系统中时,{id}​​可以是类似“/documents/2018/april/myfile.pdf”。

我该如何应对这种情况?到目前为止,我正在通过 URL“http://localhost/files/”(不带 {id})执行 GET 请求,并以 JSON 格式在正文中包含所需信息:

{
"id": {id}
}

当然,我知道这不是一个好的做法,但我不知道在这种情况下如何实现 REST 架构。我正在使用 Java + Spring Boot。

谢谢。

<小时/>

实现的解决方案:最后,我创建了以下端点:http://localhost/files/?id= {ID}。这样做的原因是因为调用我的应用程序不知道它是否正在请求存储在文件系统或我的数据库中的资源。如果应用程序知道这一点,我认为最好实现两个端点:http://localhost/files/?id= {id}(对于文件系统)和 http://localhost/files/ {id}(用于数据库)。

最佳答案

由于Path Manipulation Vulnerability而让用户在FS中选择文件的能力确实是个坏主意。 。

但是如果你想这样做,你可以将 String 设置为路径变量,然后解码你的请求字符串:

@RestController
@RequestMapping("test")
public class MainController {

@GetMapping("/{id}")
public Mono<String> main(@PathVariable("id") String id){
return Mono.just(id);
}
}

enter image description here

关于java - 当 ID 是 URL 时的 API REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54734536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com