在试图找到对任何未捕获的异常实现catch-all的最佳方法时,我发现了以下内容。
但是,在实施它的时候,我想起了我读到的内容:
警告在调用next()
...后不要修改response
对象,因为响应可能已经开始发送,您可能会导致发送无效数据。
当中间件在MVC中间件之前充当全局异常处理程序时,这是一个问题吗?在MVC中间件中,如果调用了异常中间件,就不可能启动响应,这似乎是合理的?
中间件上的invoke
:
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
// A catch-all for uncaught exceptions...
catch (Exception exception)
{
var response = context.Response;
response.ContentType = "application/json";
response.StatusCode = (int)HttpStatusCode.InternalServerError;
await response.WriteAsync(...);
}
}
当然,我无法评论作者写这篇文章时的确切意图。但一般的想法是,当HTTP响应已经启动时,您不应该修改它。这是因为响应在完全构造之前就已经可以分部分发送了。当您尝试更改请求时,您将得到无法修改响应的异常。
这就是为什么当您调用某个中间件时,并且该中间件预期会产生响应,那么您不应该修改该响应;因为它很可能会失败。
如果您调用了某个中间件,而该中间件没有产生响应,那么当然您仍然可以自由地创建响应。
下面是BeanFactoryPostProcessor的简要功能 BeanFactoryPostProcencer允许您修改实际的bean定义,而不是创建它时的实例。Spring IoC容器将允许BeanFactoryPostProcess读取配置元数据,并可能在容器实际实例化任何bean之前对其进行更改。属性持有人配置是BeanFactoryPostProcess的示例,用于将一些属性值外部化到
我正在尝试返回Json文件的内容。但是我想在将其发送到前端之前进行修改。我想在文件的开头和结尾添加“[”和“]”。我这样做是因为json文件有。 例如,提取结果,如图所示 问题 是否可以更改响应主体并将其放回ResponseEntity? 源代码
API的成功响应具有json格式(基于avro模式)。对于错误,它是否应该为异常定义另一种格式(模式)?或者成功的响应应该包括错误部分?发生错误时,将其他部分留空,只填充错误。 这更像是一个内部应用编程接口,需要定义各种自定义异常消息。它是否应该对所有此类应用程序错误使用相同的HTTP状态代码? 这些决定如何影响OPEN API(SWAGGER)?
问题内容: 我目前正在使用以Java实现的专用,解释性编程语言。作为该语言的一小部分,我想添加对Java进行调用的功能。在深入思考所有细节之前,我想知道是否有人知道通用库来进行反射性调用Java代码的“后端”部分。 也就是说,我将字符串(我定义了语法)解析为表示Java方法调用(或构造函数或字段访问)的某种数据结构,然后将该数据结构传递给该调用调用并返回结果的库。特别是,我希望它已经能够处理所有我
问题内容: locals()函数的文档特别警告不要修改其输出,因为解释器可能无法反映本地范围的更改。我假设这意味着Python规范不需要它,即使它可以在CPython中工作。 我想知道globals()是否相同。文档中没有警告,但我感到奇怪的是,这会有所不同,因为每个函数显然在不同的范围内执行相同的操作。 如果安全的话,修改globals()的输出将改善我正在处理的项目的简单性和兼容性。 问题答案