rest - 使用Micronaut进行客户端错误处理

标签 rest exception error-handling micronaut error-code

我在REST服务和消费者应用程序之间使用Micronaut层。
| REST服务|-> | Micronaut客户端/ Controller |-> |消费者应用程序|。
REST服务返回错误时, Controller 应传播错误代码。
REST服务脱机时, Controller 应返回某种500错误代码。
但是,在两种情况下,它现在都返回一个带有200错误代码的空主体。
例如,这是我的 Controller :

@Controller("/api/v1") 
public class MyController {

private final ClientNetworkList clientNetworkList;

public MyController( 
    ClientNetworkList clientNetworkList,
){
    this.clientNetworkList = clientNetworkList;
}

    @Get(uri = "/networkList", produces = MediaType.APPLICATION_JSON_STREAM)
    Flowable<NetworkListPackage> packagesNetworkList() { 
        return clientNetworkList.fetchPackages();
    }
}
和客户:
@Client(FabricConfiguration.FABRIC_API_URL) 
public interface ClientNetworkList{
     @Get("/auth/networklist") 
    Flowable<NetworkListPackage> fetchPackages();   
}
如何传播或抛出正确的正文和错误代码?
我应该如何使用@Error注释,应该在 Controller 中还是在过滤器中实现它?

最佳答案

Micronaut对此具有断路器支持。
我建议使用@Fallback注释并抛出一个异常,该异常将产生500错误代码。请参阅Micronaut文档中的7.3.7 Client Fallback

关于rest - 使用Micronaut进行客户端错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64324272/

相关文章:

rest - WCF 代理使用 Post 即使指定了 WebGet 属性(仅当从另一个 WCF 服务调用时) - 导致 405 错误

java - 将对象作为 JSTL 标记属性传递

java - Rest Dao 设计和异常处理

python - 使用python3显示(标记化的)文本的双字会导致管道错误

bash - 有没有办法捕获管道命令中的失败?

java - Rest API 返回 byte[] i 响应

c# - 使用 REST API 的 PayPal 批量支付

python-3.x - 如何捕获通过 REST API 执行的 Saltstack `cmd.run` 的返回码

c# "finally" block ,仅在异常时运行

php - Yii2 错误处理程序在非对象调用时死得很丑