如何在 Spring Boot 中制作可以重定向到 url 的 REST api
Posted
技术标签:
【中文标题】如何在 Spring Boot 中制作可以重定向到 url 的 REST api【英文标题】:How to make REST api that can redirect to url in SpringBoot 【发布时间】:2021-08-08 19:51:45 【问题描述】:我创建了一个 REST api,它可以用来保存不同的 url,这些 url 具有自动递增功能,可以为它们分配一个 id,一个端点是添加 url,另一个是从 id 获取 url 我想做一些事情,如果我通过 localhost:8080/getUrlById?id=4/ 我的浏览器应该将我重定向到第 4 号的那个 url。
我的控制器代码 -
@GetMapping("/addUrl")
public ResponseEntity<?> addUrlByGet(String url)
return new ResponseEntity<>(sortnerService.addUrlByGet(url),HttpStatus.OK);
@GetMapping("/findUrlById")
public ResponseEntity<?> findSortnerById(Integer id)
return new ResponseEntity<>(sortnerService.findUrlById(id), HttpStatus.OK);
服务类-
@Service
public class SortnerService
@Autowired
private SortnerRepo sortnerRepo;
public Sortner addUrlByGet(String url)
Sortner sortner = new Sortner();
sortner.setUrl(url);
return sortnerRepo.save(sortner);
// finding by particular Id
public List<Sortner> findUrlById(Integer id)
return sortnerRepo.findSortnerById(id);
任何人都可以建议我任何方法吗?我对 SpringBoot 真的很陌生,如果我犯了任何愚蠢的错误,请原谅。
【问题讨论】:
这能回答你的问题吗? Spring MVC @RestController and redirect 是的,我正在研究这个,但这里的大多数答案只是重定向到一些静态 url,而不是来自客户端选择的 id。 @VadymVL 你能建议我一些方法如何重定向到数据库中存在的特定链接,只要用户在 id=1 处请求 url 相应的 url 应该重定向我希望你是明白我的意思!Sortner
类是什么?您需要将 Sortner 类转换为 URL
Sortner 只是一个奇怪的名字(也许它意味着一些 idk)它的模型类包含两个私有变量 id 是自动增量和 url 来设置和获取 url 、 getter 和 setter 什么都没有,跨度>
【参考方案1】:
根据来自 cmets 的信息,我建议 Sortner
类看起来像这样:
public class Sortner
Long id;
URL url;
因此,要通过服务中的 Id 重定向到 URL,您需要将控制器重写为如下所示:
@GetMapping("/findUrlById")
public void findSortnerById(Integer id, HttpServletResponse response) throws IOException
List<Sortner> urls = sortnerService.findUrlById(id);
if(urls != null && urls.size() > 0)
response.sendRedirect(urls.get(0).getUrl().toString());
response.sendError(HttpServletResponse.SC_NOT_FOUND)
response.sendRedirect 重定向到所需的 URL
response.sendError 在数据库中找不到 URL,返回 404
【讨论】:
非常感谢,我想现在我知道这是如何工作的了,这真的意味着很多:D 最后一件事,它的 url 只是附加了我的应用程序 url,比如 - localhost:8080/google。 com 有什么解决办法吗 :) 抱歉问太多了 再次感谢 为了防止附加到您的应用程序 URL,如 -localhost:8080/google.com
,您需要确保您要重定向的 URL 具有架构部分 http://
或 https://
。如果 t 没有,则需要在调用 sendRedirect
之前手动添加。例如response.sendRedirect("https://google.com");
如果您从浏览器调用此 API 作为文档,重定向将起作用。但是,如果此 GET API 调用来自 javascript,则重定向将不起作用。以上是关于如何在 Spring Boot 中制作可以重定向到 url 的 REST api的主要内容,如果未能解决你的问题,请参考以下文章
(spring-boot) http 到 https 重定向,405 方法不允许消息
在 Google 前端负载均衡器后面运行时如何正确从 Spring Boot 2.3 重定向到 HTTPS