[alibaba/nacos]通过clusterName查询实例,不存在就返回空,为什么要抛异常呢

2023-12-14 309 views
5

接口: nacos/v1/ns/catalog/instances?serviceName=%s&clusterName=%s&groupName=%s&pageSize=999999&pageNo=1&namespaceId=%s

1.4.2通过clusterName查询实例,没有就返回空。 2.0.4通过clusterName查询实例,没有抛异常,返回500

2.0.4通过clusterName查询实例,没有也返回空,不要抛500

image

回答

1

2.0.4会删除没有实例的clusterName,导致出现了问题。

3

按照http标准定于,不存在的资源报出404错误有什么问题吗?

4

是否能提供一种兼容,因为现在clusterName是必传条件。比如现在有一个A集群的实例注册成功了,这个实例下线之后,nacos就把这个A集群相关信息给删除了。此时调用接口,传入clusterName为A,nacos直接返回500,这样有点过于严格了,返回一个200的空集合是否会好些呢。如果要修改不存在的资源,报异常可以理解。查询操作也报500,接口用起来就有点麻烦了

2

我不认为这是合理的, clusterName本身就是可选条件,有默认值,改为必须值会导致接口更加麻烦难用。

查询不存在的资源报错我认为没有任何问题,因为返回空列表你无法判断是不存在还是确实是空列表。

至于报错code,我认为可以商量,是404还是500。

0

image 看这个接口,clusterName是必填的,并且没有默认值。 需要把clusterName定义成可选的吗,如果没有传clusterName,则为null。就查询服务下全部实例。

8

这个不是openAPI,这个是控制台使用的innerapi。openAPI应该是可选项,默认是DEFAULT_GROUP

1

image 我看了openAPI的实例列表接口,clusterName确实是可选项,不过并没有默认值。如果没有传clusterName则会把该服务下,所有的集群实例都查出来,这样子就满足我的需求了。🙏