当前位置: 首页 > 知识库问答 >
问题:

后端 - springboot框架为什么访问localhost:8080状态码为200,访问路径内的depts状态码为404,?

章子航
2024-05-06

为什么访问localhost:8080状态码为200,访问路径内的depts状态码为404,

这是controller层
@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {

//private static Logger log = LoggerFactory.getLogger(DeptController.class);@Autowiredprivate DeptService deptService;@RequestMapping(value = "/depts",method = RequestMethod.GET) //指定请求方式为GET@GetMappingpublic Result list(){    log.info("查询全部部门数据");    //调用service查询部门数据    List<Dept> deptList = (List<Dept>) deptService.getAllDepts();    return Result.success(deptList);}@DeleteMapping("/{id}")public Result delete(@PathVariable Integer id){    log.info("根据id删除部门:{}",id);    //调用service删除部门    deptService.deleteDept(Integer.valueOf(id));    return Result.success();}

这是service层
@Service
public class DeptServiceImpl implements DeptService {

@Autowiredprivate DeptMapper deptMapper;@Overridepublic List<Dept> list() {    return deptMapper.list();}@Overridepublic void delete(Integer id) {    deptMapper.deleteById(id);}@Overridepublic void add(Dept dept) {    deptMapper.insert(dept);}@Overridepublic Result getAllDepts() {    return null;}@Overridepublic Result deleteDept(Integer id) {    return null;}@Overridepublic Result createDept(Dept dept) {    return null;}

}

@PostMappingpublic Result add(@RequestBody Dept dept){    log.info("新增部门: {}" , dept);    //调用service新增部门    deptService.createDept(dept);    return Result.success();}

}
public interface DeptService {

List<Dept> list();void delete(Integer id);void add(Dept dept);Result getAllDepts();Result deleteDept(Integer id);Result createDept(Dept dept);

}
这是mapper层
@Mapper
public interface DeptMapper {

@Select("select * from dept")List<Dept> list();@Delete("delete from dept where id = #{id}")void deleteById(Integer id);@Insert("insert into dept(id,name,permission) values(#{id},#{name},#{permission})")void insert(Dept dept);

}
这是domain层
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {

private Integer id; //IDprivate String name; //部门名称private String permission;//部门权限

}
日志信息如下
2024-05-04 13:34:07.209 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.DispatcherServlet : GET "/", parameters={}
2024-05-04 13:34:07.209 DEBUG 11888 --- [nio-8080-exec-6] o.s.b.a.w.s.WelcomePageHandlerMapping : Mapped to ParameterizableViewController [view="forward:index.html"]
2024-05-04 13:34:07.209 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.v.ContentNegotiatingViewResolver : Selected '/' given [/]
2024-05-04 13:34:07.209 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.v.InternalResourceView : View name 'forward:', model {}
2024-05-04 13:34:07.209 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.v.InternalResourceView : Forwarding to [index.html]
2024-05-04 13:34:07.210 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.DispatcherServlet : "FORWARD" dispatch for GET "/index.html", parameters={}
2024-05-04 13:34:07.210 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]
2024-05-04 13:34:07.211 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.DispatcherServlet : Exiting from "FORWARD" dispatch, status 200
2024-05-04 13:34:07.211 DEBUG 11888 --- [nio-8080-exec-6] o.s.w.s.DispatcherServlet : Completed 200 OK
2024-05-04 13:34:09.865 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.DispatcherServlet : GET "/depts", parameters={}
2024-05-04 13:34:09.865 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]
2024-05-04 13:34:09.867 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.r.ResourceHttpRequestHandler : Resource not found
2024-05-04 13:34:09.867 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.DispatcherServlet : Completed 404 NOT_FOUND
2024-05-04 13:34:09.868 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.DispatcherServlet : "ERROR" dispatch for GET "/error", parameters={}
2024-05-04 13:34:09.868 DEBUG 11888 --- [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)
2024-05-04 13:34:09.869 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [/] and supported [application/json, application/+json, application/json, application/+json]
2024-05-04 13:34:09.869 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [{timestamp=Sat May 04 13:34:09 GMT+08:00 2024, status=404, error=Not Found, message=No message avail (truncated)...]
2024-05-04 13:34:09.870 DEBUG 11888 --- [nio-8080-exec-4] o.s.w.s.DispatcherServlet : Exiting from "ERROR" dispatch, status 404

希望大神能帮帮我这个初学者

共有4个答案

巢安澜
2024-05-06

@RequestMapping 用在 @Controller或者 @RestController 注解标识的类上的话,意思是接下来整个类的所有使用 @RequestMapping 的方法的请求前缀都得加上类上面标识的路径。
比如类上面是:

@RequestMapping("/depts")

方法上面也是:

@RequestMapping("/depts")

那么最后应该请求的路径就是 xxx/depts/depts

如果去掉类上面的 @RequestMapping("/depts") 那么最后应该请求的路径就是 xxx/depts

时恩
2024-05-06

访问 depts/depts 就好了,想访问哪个接口需要 Controller 上 RequestMapping 地址 + 方法上RequestMapping地址

郭俊人
2024-05-06

controller层和方法上的requestmapping只需要一个

宦高岑
2024-05-06

如果你使用的是IDEA 建议更新到较新版本
image.png
都会有这样的提示你再看看路径是怎么样的

 类似资料:
  • 我正面临一个奇怪的问题。我有一个运行在端口8080上的java spring应用程序和运行在端口3000上的Angular应用程序。当请求返回状态为200并且可以在browser network选项卡中找到响应时,控制台抛出错误XMLHttpRequest无法加载'http://localhost:8080/apiname'。请求的资源上没有“access-control-allow-origin

  • 我正在尝试进行查询-https://GRAPH.microsoft.com/v1.0/users/user.name@contoso.com/messages?$select=from,to recipients,ccRecipients,bccRecipients on GRAPH Explorer-https://developer.microsoft.com/en-us/GRAPH/grap

  • 我有一个名为的组件,还有一个子组件名为。智利组件有一个名为的状态。我需要从AvailabiltyCalendar组件访问该状态并获取该状态值。我该怎么做呢。 可用压路机组件 DatePicker组件

  • RichAsyncFunction的Flink文档说明: 尚不支持RuntimeContext中与状态相关的API,因为在访问工作线程中的状态时,键可能会发生更改。 的文档在这里。

  • 我想在状态尚未装入时访问状态的属性。 我想做4,但得到以下错误: P. S也不起作用。

  • 我这样做是为了尝试我的UserRestController,但我在响应中什么也没有得到,还有一个200状态码。 我尝试了很多方法,但都没有找到答案。。。 这是我用来测试分类控制器的代码 当我运行单元测试时,会得到以下响应: