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

Spring RestController返回错误为html而不是json

沃弘图
2023-03-14

我有一个spring boot webapp,我在其中定义了REST API。我将Spring Security性用于REST API安全性。

我已经用RESTController注释了我的控制器类。我最近更新了spring boot,mvc和安全性到最新版本。

我现在看到,在我的负面情况下,在更新之前,它返回json错误响应,但现在在更新之后,它返回html错误响应。

在更新之前,它给出了以下错误响应-

{
  "timestamp": "2018-05-21T18:22:37.105+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "Error message.",
  "path": "<API path>"
}

更新后,它给出以下响应。

<!DOCTYPE html>
<html>
    <head>
        <title>Apache Tomcat/8.0.51 - Error report</title>
        <style type="text/css">H1 {font-family:Tahoma,Arial,sansserif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style>
    </head>
    <body>
        <h1>HTTP Status 500 - Error message.</h1>
        <div class="line"></div>
        <p>
            <b>type</b> Status report
        </p>
        <p>
            <b>message</b>
            <u>Error message.</u>
        </p>
        <p>
            <b>description</b>
            <u>The server encountered an internal error that prevented it from fulfilling this request.</u>
        </p>
        <hr class="line">
        <h3>Apache Tomcat/8.0.51</h3>
    </body>
</html>

我的控制器中没有任何异常处理程序。默认情况下,它是作为json错误出现的。我有jackson和jackson-mapper-asl在我的libs里。

我不知道是否有一个缺省设置需要更改,以便将错误作为JSON发送。

我还试图禁用ErrorPageFilter,但即使在那之后,我仍然得到HTML响应。

有什么方法可以让我得到json响应而不是HTML?

共有1个答案

贺高杰
2023-03-14

我想你错过了控制器会产生的那种反应。

将以下内容添加到终结点:

@ResponseBody
@RequestMapping(value="/xyz", produces="application/json")
public String XYZ() {
    // Your Code Goes Here
    return  return new JSONObject("{'aa':'bb'}");
}

查看以下文章:在javascript中,从spring controller返回JSON响应是html而不是JSON,在spring Boot中返回JSON对象作为响应。

 类似资料:
  • 问题内容: 根据手册页: 返回值 成功完成后,将返回0。否则,将返回并且设置全局变量以指示错误。在任何一种情况下,对该流的任何进一步访问(包括对的另一个调用)都会导致未定义的行为。 错误 底层的文件描述符无效。 该函数也可能会失败,并设置为例程指定的任何错误,或者。 当然应该失败,但是我希望它以正常方式返回,而不是直接因分段错误而死亡。是否有任何这种行为的原因? 提前致谢。 更新:我将把代码放在这

  • 我试图让2支球队互相比赛。当我说团队1.玩(团队2)时,我称之为;当 i 生成的数字小于 0.5 时,team2 应获胜,如果大于 0.5,则团队 1 应获胜。当团队 1 获胜时,它会正确显示为尼克斯,但当团队 2 获胜时,它会显示内存地址。我怎么能让它正确地说网是赢的,而不是team@78987neu73

  • 假设我有一个属性如下所示: 并在test.component.html中添加一行:

  • 我试图运行Spring启动应用程序,这将返回我静态文件夹上的超文本标记语言静态文件,问题是:每次我加载页面:127.0.0.1我得到字符串"bakara",而不是超文本标记语言文件bakara.html.,当我加载127.0.0.1/bakara.html我得到bakara.html文件 pom.xml: 应用属性: HomeController.java: 项目结构:

  • 问题内容: 使用JQuery或任何其他类似框架从自定义URL / Web服务中加载HTML内容非常容易。到目前为止,我已经使用了很多次这种方法,并且发现性能令人满意。 但是所有书籍,所有专家都试图让我使用JSON而不是生成的HTML。它比HTML优越得多吗? 它快很多吗? 它在服务器上的负载是否要小得多? 另一方面,我有一些使用生成的HTML的原因。 它是简单的标记,通常与JSON一样紧凑或实际上

  • 下面,您可以看到一个Java Card程序,它充当8字节随机数生成器: 这个程序在NetBeans IDE中成功地转换为。cap文件,但是当我想用Eclipse IDE执行同样的操作时,它返回以下错误来响应我转换applet的请求: 错误:randgen:空包。 你知道吗?