gpt4 book ai didi

java - Spring Boot - 请求映射不接受尾部斜杠或多个目录

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:15 24 4
gpt4 key购买 nike

当我的 Controller 中进行RequestMapping时,我能够将一个html文件映射到“/”,另一个映射到“/users”。但是,尝试映射到“/users/”或“/users/test”将不起作用。在控制台中,它会说端点已映射,但在尝试访问它时,我会收到 404 错误页面。

package com.bridge.Bitter.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class BitterController {

//works
@RequestMapping(value="/")
public String getMainPage(){
return "main.html";
}

//works
@RequestMapping(value="/users")
public String getUsersPage(){
return "users.html";
}

//doesn't work, Whitelabel error page
@RequestMapping(value="/users/")
public String getUsersSlashPage(){
return "users.html";
}
//doesn't work, Whitelabel error page
@RequestMapping(value="/users/test")
public String getUsersTestPage(){
return "users.html";
}

}

我的application.properties仅包含“spring.data.rest.basePath=/api”。

如果我从 @Controller 更改为 @Rest Controller,则会发生以下情况:

package com.bridge.Bitter.controllers;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class BitterController {

//works
@RequestMapping(value="/")
public String getMainPage(){
return "main.html";
}

//returns a webpage with the text "users.html" on it instead of serving the html
@RequestMapping(value="/users")
public String getUsersPage(){
return "users.html";
}

//returns a webpage with the text "users.html" on it instead of serving the html
@RequestMapping(value="/users/")
public String getUsersSlashPage(){
return "users.html";
}
//returns a webpage with the text "users.html" on it instead of serving the html
@RequestMapping(value="/users/test")
public String getUsersTestPage(){
return "users.html";
}

}

将函数从返回字符串更改为返回

new ModelAndView("user.html")

适用于/users,但对于/users/和/users/test 会出现 404 错误。

最佳答案

您正尝试两次映射同一条路径。/users 的处理方式与/users/相同,因此 Spring 无法解析哪个 Controller 方法应处理该请求。

你可以试试这个:

package com.bridge.Bitter.controllers;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class BitterController {

@RequestMapping("/")
public String getMainPage(){
return "main.html";
}

@RequestMapping("/users")
public String getUsersPage(){
return "users.html";
}

@RequestMapping("/users/test")
public String getUsersTestPage(){
return "users.html";
}
}

另一方面,当您使用 @RestController annotation 时,您总是返回 JSON 格式的响应文本,这就是为什么您总是得到相同的结果。

关于java - Spring Boot - 请求映射不接受尾部斜杠或多个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145611/

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