RestTemplate的微米统计数据

问题描述 投票:1回答:1

我正在尝试使用micrometer获取剩余uri的指标。我读了thisthis和一堆SO帖子。阅读所有这些内容后,我对此有一些疑问。

  1. 为了使micrometer正常工作,应将uri参数化(Reference)。我假设这只是路径变量,而不是请求参数。我正确吗?

    1. 我们应该完全不使用UriComponentsBuilder,因为我们不想将uri扩展到resttemplate之外,而让resttemplate为我们完成。

    2. 如果我使用此restClient.getForObject( fooSvcUrl, FooBar.class, uriVariables );micrometer是否看待fooSvcUrl,此时应对其进行参数化?我问这是因为,如果我按照以下说明操作,将无法正常工作。我对么 ? restClient.getForObject(UriComponentsBuilder.fromUriString(fooSvcUrl).buildAndExpand(uriVariables ).toUri() , FooBar.class);

java spring-boot resttemplate spring-boot-actuator spring-micrometer
1个回答
0
投票

我最近不得不处理所有这些问题,因此我可以给您以下答案:

1。“参数化”在这里意味着您将占位符应用到URI中,而不管它们的位置如何。基本上,只要您提供值来替换占位符,就可以对URI中的所有参数进行参数化-方案,主机,路径变量甚至查询参数。

同样,以下URI传递给RestTemplate后将起作用:

https://www.foo.bar/baz/{id} with {"id":1}
https://www.foo.bar/baz?id={id} with {"id":1}
https://{host}/foo/{id}?target={target} with {"host":"www.foo.bar", "id":1, "target":"baz"}

2。您不应该这样做,尤其是如果您希望将保留符号放入URI中,因为UriComponentsBuilder会尝试立即对其进行编码,从而导致RestTemplate双击编码,先将非片段#转换为%23,然后转换为%2523

3。是的,将URI用作RestTemplate.getForObject的参数时,应该对其进行参数化,因为采用参数值参数的重载方法将在实际执行请求之前对其进行扩展。

© www.soinside.com 2019 - 2024. All rights reserved.