在@RestController
,我们使用定义一个定制的ExceptionHandler。springframework的设置自定义的原因短语
在它总是返回时刻“404未找到”
我要定制的“未找到”文本到别的东西。
我怎样才能做到这一点?
所以,我要的是自定义:
红色国防部以“404”,目前说背后的文字“未发现”。这被称为HTTP原因短语。
在@RestController
,我们使用定义一个定制的ExceptionHandler。springframework的设置自定义的原因短语
在它总是返回时刻“404未找到”
我要定制的“未找到”文本到别的东西。
我怎样才能做到这一点?
所以,我要的是自定义:
红色国防部以“404”,目前说背后的文字“未发现”。这被称为HTTP原因短语。
尝试:
@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="Cuz I said so!") // 404
我创建了一个简单的Spring启动应用程序(使用Groovy而不是Java)。我在这里创造出一个非常简单的REST控制器:
@RestController
class TestController {
@RequestMapping("/")
def there(){
throw new IllegalArgumentException("IAE Error")
}
@RequestMapping("testerror")
@ExceptionHandler(IllegalArgumentException.class)
@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="Cuz I said so!") // 404
def testError(){
"TestError"
}
}
的响应是404,具有以下JSON返回:
{
"timestamp": 1456972233805,
"status": 404,
"error": "Not Found",
"exception": "java.lang.IllegalArgumentException",
"message": "Cuz I said so!",
"path": "/"
}
你可以看到,“理性”作为返回“消息'在JSON响应中。
因为Spring不允许你改变HttpStatus类型,它们是不变的[HttpStatus]对象,并且被认为是HTTP 1.1 RFC中定义明确的标准。
然而,您可以使用自定义代码和原因创建自己的自定义HttpStatus类型。但是,如果你决定这么做,你应该使用不属于定义标准的代码。
相反,您可能会考虑遵循良好REST设计最佳实践的示例。一个很好的示例文章可以在这里找到:REST Best Practices
不,这是做什么的:在我的初始配置中使用@ResponseStatus(HttpStatus.NOT_FOUND)它返回了一个JSON响应和一个http.status 404和http.reason Not Found。随着你的修改它返回404错误页面,在那个页面有
这对我来说很好,我已经添加到答案中。你如何访问端点URL?浏览器,一个REST客户端?你在使用Spring Boot吗? – pczeus
但这不是重点。我想要的是自定义原因短语的字符串。不是响应主体中的文本。看看我附加的图像。 “404”后的红点背后的文字。这被称为“原因词组”。我想返回一个自定义的原因短语。 –
尝试自定义HTTP/1.1原因短语可能没有意义 - HTTP/2中没有任何理由短语。所以将它用于任何重要的东西都是短视的。
嗨@ seba.wagner我想达到同样的目的,你有没有得到任何解决方案或解决方法? – KingKari
只看@pczeus给出的下一个答案 –