如何解决使用Micronaut进行客户端错误处理
我正在REST服务和消费者应用程序之间使用Micronaut层。 | REST服务|-> | Micronaut客户端/控制器|-> |消费者应用程序|。 REST服务返回错误时,控制器应传播错误代码。 REST服务脱机时,控制器应返回某种500错误代码。 但是,在两种情况下,它现在都返回一个带有200错误代码的空主体。
例如,这里是我的控制器:
@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注释,应该在控制器中还是在过滤器中实现它?
解决方法
Micronaut对此具有断路器支持。
我建议使用@Fallback注释并抛出一个异常,该异常将产生500错误代码。请参阅Micronaut文档中的7.3.7 Client Fallback。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。