关于访问后端接口报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 {@AutowiredRedissonClient redissonClient;@RequestMapping("/testRedissonClient")public void TestRedisson() {System.out.println("testRedissonClient: "+redissonClient);}
}

在这里插入图片描述
我们开始调用一下接口,让404错误出现。(这里使用postman测试)
情况一:server.servlet.context-path(项目访问路径)漏写或者名称写错
在这里插入图片描述
在这里插入图片描述
情况二:类上面的@RequestMapping(“/demo”)注解里面的值漏写或者名称写错

在这里插入图片描述
在这里插入图片描述

情况三:方法上面的@RequestMapping(“/demo”)注解里面的值漏写或者名称写错
在这里插入图片描述

在这里插入图片描述
情况四:路径多写了一部分内容
在这里插入图片描述

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

第二点 后端接口的返回值是否能够映射到前端页面
对于接口访问路径书写正确,接口能访问成功的情况下仍然会出现404问题,具体操作案例如下。
在这里插入图片描述

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 {@AutowiredRedissonClient 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")@ResponseBodypublic Msg TestRedisson3() {System.out.println("testRedissonClient3: "+redissonClient);return null;}//返回值是虽说是空字符,但是在@ResponseBody注解的加持下,则不会出现404异常问题@RequestMapping("/testRedissonClient4")@ResponseBodypublic String TestRedisson4() {System.out.println("testRedissonClient4: "+redissonClient);return "";}//返回值是虽说是null,但是在@ResponseBody注解的加持下,则不会出现404异常问题@RequestMapping("/testRedissonClient5")@ResponseBodypublic String TestRedisson5() {System.out.println("testRedissonClient5: "+redissonClient);return null;}//返回值是是一个json对象,但是在@ResponseBody注解的加持下,则不会出现404异常问题@RequestMapping("/testRedissonClient6")@ResponseBodypublic 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) 方法的返回值要在项目中能够找到对应的前端页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50389.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Comate代码助手推出,现场生成了贪吃蛇游戏,我们距离AI自动编程还有多远?

Comate代码助手推出,现场生成了贪吃蛇游戏,我们距离AI自动编程还有多远? 百度智能云推出“Comate”代码助手,并正式开放邀测,不算很意外。 毕竟让AI写代码,跑一跑贪吃蛇,算是传统艺能。 不过你…

ChatGPT帮我用WPF制作一个简易贪吃蛇小游戏

User&#xff1a; 帮我生成一个WPF的应用程序&#xff0c;做一个贪吃蛇的小游戏&#xff0c;要完整的示例。 ChatGTP: 当然&#xff01;以下是一个完整的WPF应用程序示例&#xff0c;用于实现贪吃蛇小游戏&#xff1a; MainWindow.xaml&#xff1a; <Window x:Class"…

《HelloGitHub》第 82 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

如何让发送者不知道你收听了WhatsApp语音消息

如果您正在寻找一种在发件人不知情的情况下收听 WhatsApp 音频消息的方法&#xff0c;您可以找到以下 3 种不同的方法来收听 WhatsApp 音频&#xff0c;而不会生成蓝勾。 在发件人不知情的情况下收听 WhatsApp 音频 每当您打开 WhatsApp 文本或语音消息时&#xff0c;WhatsApp…

怎么将文字转语音真人发声?不会的小伙伴来看这个方法

怎么把文字转换成语音真人发声呢&#xff1f;大家在看视频的时候&#xff0c;发现很多的解说视频的声音都很相近&#xff0c;自己在做视频的时候也想使用这个声音&#xff0c;但是不知道他们是如何做到的&#xff0c;今天教大家一个方法&#xff0c;可以把文字转成真人发音的语…

马斯克呼吁重返办公室,直言:“做不到,就视为离职”

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 近年来全球兴起的居家办公热潮&#xff0c;苹果、微软、Meta 等科技巨头加入其间。 然而&#xff0c;作为特斯拉、推特 CEO 的马斯克似乎在这件事上有着不用的想法。 据 theverge 报道&…

搜狗输入法电脑端如何分词

使用引号&#xff08;‘&#xff09;即可&#xff0c;如图 如果使用双拼&#xff0c;分词就更有必要&#xff0c;在输入长句子的时候&#xff0c;一手按住引号&#xff0c;一手输入简拼&#xff0c;可以弥补双拼的长句短板&#xff0c;如图

电脑必备:通用输入法状态提示,再也不怕按错,再也不用看右下角

ImTip 是一个开源输入法状态提示工具&#xff08; 仅 639 KB &#xff09;&#xff0c;虽然发布没多久&#xff0c;已被网友推荐为 Windows 必备软件。在小众有网友留言&#xff1a;“终于遇到她了&#xff0c;你说的这个痛苦&#xff0c;我承受好久了……”。 ImTip 通过在输…

将电脑输入法关闭只留我们经常用的输入法

很多人不习惯用微软默认的输入法&#xff0c;有它在语言栏占着位置&#xff0c;就算换了首选输入法&#xff0c;想要切换别的输入法时&#xff0c;每次还是要多按一次切换组合键&#xff0c;碎小的时间累积起来&#xff0c;会浪费我们不少工夫&#xff0c;本篇经验便告诉大家如…

【软件架构思想系列】从伟人《矛盾论》中悟到的软件架构思想真谛:“对象”即事物,“函数”即运动变化...

引子 形而上学和辩证法两种宇宙观是截然相反的。“所谓形而上学的或庸俗进化论的宇宙观,就是用孤立的、静止的和片面的观点去看世界。这种宇宙观把世界一切事物,一切事物的形态和种类,都看成是永远彼此孤立和永远不变化的”,“和形而上学的宇宙观相反,唯物辩证法的宇宙观主…

为什么说3D引擎是下一代互联网的“CAD”?

01 3D引擎是什么&#xff1f; 听到“引擎”两个字&#xff0c;你可能首先会想到汽车引擎&#xff0c;为汽车提供动力的核心部件。如果没有引擎&#xff0c;汽车就只能是一个模型&#xff0c;它就无法跑起来。 3D模型也一样&#xff0c;我们用3DMax软件制作了一个非常逼真、精美…

提示工程在AI绘画领域的应用前景

AI绘画是现在非常火热的 AI领域。在很多人眼里, AI的绘画原理是类似于人类的写生&#xff0c;不过这里所说的“AI”不是普通的 AI,而是“AI CAD”。在传统的 CAD软件中, CAD是用来绘画的&#xff0c;在 CAD软件中&#xff0c;模型首先被输入到电脑中&#xff0c;在电脑中通过投…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的深度学习模型

目录 给我推荐20个比较流行的nlp模型给我推荐20个比较流行的计算机视觉模型给我推荐20个比较流行的图像分类模型给我推荐20个比较流行的人脸识别模型给我推荐20个比较流行的实体识别模型给我推荐20个比较流行的语言识别模型给我推荐20个比较流行的激光雷达3D点云模型给我推荐20…

人工智能 AI | ChatGPT 时代,程序员的生存之道

ChatGPT 近期炙手可热&#xff0c;仿佛没有什么问题是它不能解决的。出于对 ChatGPT 的好奇&#xff0c;我们决定探索下它对于前端开发人员来讲&#xff0c;是作为辅助工具多一些&#xff0c;还是主力工具更多一些&#xff1f; 2D 能力测试 我们就挑选一个著名的递归回溯问题—…

达芬奇

达芬奇 注意事项 归纳素材 理好时间线 分好轨道 part1 1&#xff1a;媒体面板&#xff08;导入素材&#xff0c;进行分类&#xff09; 媒体浏览器&#xff08;右上&#xff09; 找文件 素材监视器&#xff08;中上&#xff09; 回看 素材数据&#xff08;左&#xff09; 查…

e3 1231 v3 达芬奇_Premiere和达芬奇调色,都是最新版

Pr更新到最新版 在达芬奇调色软件DaVinci Resolve Studio 更新到16版本后,Adobe 终于不再挤牙膏,频繁更新。从2020下半年开始,推出了支持硬件加速(Nvdia和AMD显卡)的更新版本,在视频编辑和渲染输出下速提速明显,尤其是使用硬件加速渲染输出,速度飞快,将近5倍的提升,高倍…

达芬奇项目服务器无法在这台计算机上找到,Vincialign达芬奇隐形矫正软件系统常见问题解答...

原标题&#xff1a;Vincialign达芬奇隐形矫正软件系统常见问题解答 如何顺利有效地使用Vincialign达芬奇软件系统&#xff0c;对于临床医生来讲非常重要。在过去的一段时间里&#xff0c;我们也接到一些医生的反馈&#xff0c;今天&#xff0c;我们将常见问题整理汇总如下&…

windows系统安装docker版本davinci达芬奇踩坑指南

本文讲解windows系统如何安装docker版开源软件davinci&#xff08;数据可视化web服务&#xff09;&#xff0c;并指出一系列的踩坑指南。 达芬奇github地址 https://github.com/edp963/davinci 目录 一 安装docker环境 1 根究你的windows系统是win7&#xff0c;win8或者…

达芬奇导入gif(含 AE 和 PR)

AE、PR、FCPX都支持导入gif&#xff0c;但是达芬奇不支持&#xff0c;得先将gif转成mp4再进行导入。 本文主要面向和我一样需要处理角色动画 和 像素动画的小伙伴。 前言 剪辑软件导入gif, 大概会遇到这些问题 1、情况简单 如果你的gif就是不透明的&#xff0c;只要将gif转成m…

达芬奇操作

示波器 y轴为像素点&#xff0c;x轴为画面从左到右 y轴越宽及曲线竖直距离越长细节越多 Y曲线和画面像素的关系 可以直接用鼠标在屏幕上吸取一个点&#xff0c;Y曲线就会对应一个点 当将Y曲线对应的点网上或往下拉时&#xff0c;整个画面也会变亮变暗&#xff0c;波形图也会…