我在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/