关于访问后端接口报404的问题——全网最详细的404错误详解

这篇具有很好参考价值的文章主要介绍了关于访问后端接口报404的问题——全网最详细的404错误详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当我们通过前端向后端发起一个请求调用后端接口时,经常会遇到404的问题。网上关于对404问题介绍的一大堆,其实404问题的本质就两点。

在介绍404问题之前先温习一个小的知识点——项目访问路径
项目访问路径:就是定位一个项目的路径,可以理解为项目名,但是一般这个名称是可以自定义的。在SpringBoot在2.0版本之前,在yml文件中配置项目访问路径时通过server.context-path配置,
而在SpringBoot在2.0版本之后使用server.servlet.context-path配置项目访问路径。

第一点 后端接口能否访问
在这里我贴出了一段代码,包括application.yml配置文件,后续所有的演示都基于这段代码与配置文件。

package com.redisson.controller;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/redisson")
public class RedissonController {

    @Autowired
    RedissonClient redissonClient;

    @RequestMapping("/testRedissonClient")
    public void TestRedisson() {
        System.out.println("testRedissonClient: "+redissonClient);
    }
}

接口404,Javaweb——异常与错误汇总,java,spring,spring boot
我们开始调用一下接口,让404错误出现。(这里使用postman测试)
情况一:server.servlet.context-path(项目访问路径)漏写或者名称写错
接口404,Javaweb——异常与错误汇总,java,spring,spring boot
接口404,Javaweb——异常与错误汇总,java,spring,spring boot
情况二:类上面的@RequestMapping(“/demo”)注解里面的值漏写或者名称写错

接口404,Javaweb——异常与错误汇总,java,spring,spring boot
接口404,Javaweb——异常与错误汇总,java,spring,spring boot

情况三:方法上面的@RequestMapping(“/demo”)注解里面的值漏写或者名称写错
接口404,Javaweb——异常与错误汇总,java,spring,spring boot

接口404,Javaweb——异常与错误汇总,java,spring,spring boot
情况四:路径多写了一部分内容
接口404,Javaweb——异常与错误汇总,java,spring,spring boot

总结:
端口号后面的访问路径书写错误,导致在访问后端接口时404问题的出现。像这种错误造成的直接后果就是请求无法进入到后端接口里。
.
解决方案:
出现404问题了,要认真排查访问接口的地址是否正确
一般请求访问的是:项目访问路径+类上面的@RequestMapping配置的value地址值+类上面的@RequestMapping配置的value地址值

第二点 后端接口的返回值是否能够映射到前端页面
对于接口访问路径书写正确,接口能访问成功的情况下仍然会出现404问题,具体操作案例如下。
接口404,Javaweb——异常与错误汇总,java,spring,spring boot

package com.redisson.controller;

import com.redisson.bean.Person;
import com.redisson.utils.Msg;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/demo")
public class RedissonController {

    @Autowired
    RedissonClient redissonClient;

//    返回值是void,报404异常
    @RequestMapping("/testRedissonClient")
    public void TestRedisson() {
        System.out.println("testRedissonClient: "+redissonClient);
    }

//返回值是null,报404异常
    @RequestMapping("/testRedissonClient2_1")
    public Msg TestRedisson2_1() {
        System.out.println("testRedissonClient2_1: "+redissonClient);
        return null;
    }

//  返回值是空字符(比如 ""),报404异常
    @RequestMapping("/testRedissonClient2_2")
    public String TestRedisson2_2() {
        System.out.println("testRedissonClient2_2: "+redissonClient);
        return "";

    }

//  返回值是任意字符串(比如 "success"),报404异常
    @RequestMapping("/testRedissonClient2")
    public String TestRedisson2() {
        System.out.println("testRedissonClient2: "+redissonClient);
        return "success";
    }
//返回值是虽说是null,但是在@ResponseBody注解的加持下,则不会出现404异常问题
    @RequestMapping("/testRedissonClient3")
    @ResponseBody
    public Msg TestRedisson3() {
        System.out.println("testRedissonClient3: "+redissonClient);
        return null;
    }

    //返回值是虽说是空字符,但是在@ResponseBody注解的加持下,则不会出现404异常问题
    @RequestMapping("/testRedissonClient4")
    @ResponseBody
    public String TestRedisson4() {
        System.out.println("testRedissonClient4: "+redissonClient);
        return "";
    }
    //返回值是虽说是null,但是在@ResponseBody注解的加持下,则不会出现404异常问题
    @RequestMapping("/testRedissonClient5")
    @ResponseBody
    public String TestRedisson5() {
        System.out.println("testRedissonClient5: "+redissonClient);
        return null;
    }

    //返回值是是一个json对象,但是在@ResponseBody注解的加持下,则不会出现404异常问题
    @RequestMapping("/testRedissonClient6")
    @ResponseBody
    public Msg TestRedisson6() {
        System.out.println("testRedissonClient6: "+redissonClient);
        return Msg.success("访问成功!").data("person",new Person());
    }

    //返回值是是一个json对象,但是在没有@ResponseBody注解的加持下,则会出现404异常问题
    @RequestMapping("/testRedissonClient7")
    public Msg TestRedisson7() {
        System.out.println("testRedissonClient6: "+redissonClient);
        return Msg.success("访问成功!").data("person",new Person());
    }
}

总结:
1、 添加了@ResponseBody注解的方法,在请求访问到方法里面后,返回到前端页面时是不会报404异常的。原因是@ResponseBody注解修饰的方法其返回值是不经过视图解析器解析的。
.

2、端口号后面的访问路径书写正确,请求能够进入到接口中,但是在返回到前端页面时报404异常。像这种错误造成的直接后果就是响应结果无法在页面展示。
.
分析:
之所以会出现这种问题是因为springBoot默认在没有@ResponseBody注解的加持下的情况下,返回的结果是经过视图解析器去解析并且匹配一个合适的前端页面,然后将结果展示出来的。当我们在项目中没有书写相应的前端页面时,自然视图解析器解析的结果无法匹配到,因此报404异常.
. .
解决方案:
出现404问题了,首先排查有没有添加@ResponseBody注解,其次要认真排查我们在项目中没有书写相应的前端页面。
(1) 在controller类的方法上面或者controller类上面添加@ResponseBody注解
(2) 方法的返回值要在项目中能够找到对应的前端页面。文章来源地址https://www.toymoban.com/news/detail-787886.html

到了这里,关于关于访问后端接口报404的问题——全网最详细的404错误详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全网最详细中英文ChatGPT接口文档(五)30分钟快速入门ChatGPT——手把手示例教程:如何建立一个人工智能回答关于您的网站问题,小白也可学

    This tutorial walks through a simple example of crawling a website (in this example, the OpenAI website), turning the crawled pages into embeddings using the Embeddings API, and then creating a basic search functionality that allows a user to ask questions about the embedded information. This is intended to be a starting point for more sophisticated applicat

    2023年04月17日
    浏览(56)
  • 【Docker】解决Docker创建Tomcat容器实例后访问Tomcat主页时报HTTP状态404-未找到的错误

    《Docker是什么?Docker从介绍到Linux安装图文详细教程》 《30条Docker常用命令图文举例总结》 《Docker如何构建自己的镜像?从镜像构建到推送远程镜像仓库图文教程》 《Docker多个容器和宿主机之间如何进行数据同步和数据共享?容器数据卷从介绍到常用操作图文教程》 我在使

    2024年02月06日
    浏览(55)
  • gateway+nacos整合后访问接口出现404问题

    首先保证maven坐标和配置文件没有问题 1、maven坐标 2、配置文件 3、启动gateway服务器以及test和media服务器,并注册到nacos 4、在以上全部保证正确的前提下通过gateway访问其他端口 访问media端口 访问test端口 5、这个原因是因为nacos服务名必须为“xx-xx”,不能为单独的单词,必须

    2024年02月13日
    浏览(46)
  • 【BUG】SpringBoot 静态资源(static)无法访问问题404

    SpringBoot访问静态资源出现 404 项目场景 问题描述 ​编辑原因分析 解决方案 1. 将静态资源放在static 或 templates目录中 2. 继承WebMvcConfigurerAdapter  【已经过时】 3. 继承WebMvcConfiguratiWebonSupport 【推荐】 4. 实现WebMvcConfigurer接口 【推荐】 WebMvcConfiguratiWebonSupport 与 WebMvcConfigurer 区别

    2024年02月05日
    浏览(51)
  • Azure AD 与 AWS 单一帐户SSO访问集成【包含阿里在最后】,超详细讲解,包括解决可能出现的错误问题

    在 Azure AD 中控制谁有权访问 AWS Single-Account Access。 让用户使用其 Azure AD 帐户自动登录到 AWS Single-Account Access。 在一个中心位置(Azure 门户)管理帐户。 若要开始操作,需备齐以下项目: 一个 Azure AD 订阅。 如果没有订阅,可以获取一个免费帐户。 已启用 AWS IAM IdP 的订阅。

    2024年02月06日
    浏览(50)
  • 全网多种方法解决Invalid Host header(无效的主机头)服务器域名访问出现的错误

    在搭建 vue-cli 环境,用 nginx 做代理服务器,访问时却显示: Invalid Host header 。 知其然,知其所以然,我们在解决该问题之前,要弄明白 Invalid Host header 是什么。 ChatGPT 目前正火,可以借助 ChatGPT 来回答, Invalid Host header 是什么,如下图所示: The “Invalid Host header” error typ

    2024年02月03日
    浏览(38)
  • 记录使用nginx部署静态资源流程,以及遇到的访问静态资源404问题

    将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署实现 动静分离 ,提高用户访问静态代码的速度,降低对后台应用访问,减轻后台服务器的压力。 这里我选择放在了 html文件夹 下,(也可以放在和html文件夹同级,或其它位置 打开 conf文件夹 打开总配置文

    2024年02月08日
    浏览(64)
  • (全网最详细!)mysql、redis 、RabbitMQ只能本机访问,怎么改?

    如果只能本机访问,怎么改?   然后重启一下mysql服务 任务管理器-关掉mysql 搜索 计算机管理-重启mysql服务   然后 打开查询,并选择mysql数据,输入这个sql语句,点击运行 找出来这个之后,把host 改为 %   *如果 你执行sql语句的时候,显示  你可以直接点开mysql里的user表,然

    2024年02月14日
    浏览(41)
  • 【ubuntu21.04问题】关于404 Not Found [IP: 185.125.190.39 80]的解决办法

    卸载不维护的ubuntu21.04,重装 ubuntu  LTS 版本(如20.04.4),再换相应源,即可解决。 做项目时文档要求ubuntu21.04版本,按照文档要求换了相应的ubuntu版本,换源也按照要求来,但是每次 apt-get update 的时候,还是失败,提示404 Not Found [IP: 185.125.190.39 80]。 ubuntu21.04版本是中间过渡

    2024年02月13日
    浏览(34)
  • 关于Springboot集成swagger2出现的swagger-resouces和ui请求的404问题

    本项目集成的是增强版的Swagger文档,使用的增强版的UI com.github.xiaoymin 按照上面的配置,在本地测试效果是正常的 在红色标记的地方是正常显示的,但是按照这个配置打war包部署到服务器或者本地的tomcat中就会出现404的现象。 出现上面的这种情况时,看过很多网上的帖子说

    2024年04月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包