gpt4 book ai didi

java - 在Micronaut的声明式客户端中传递自定义 header

转载 作者:行者123 更新时间:2023-12-01 17:45:10 25 4
gpt4 key购买 nike

我正在尝试对Micronaut项目进行检测,以向其添加分布式跟踪(我知道Micronaut已支持该项目,但对此有一个非常令人信服的理由)。为此,我需要传递自定义HTTP标头,其中包含需要在微服务之间传递的序列化上下文。

我尝试创建过滤器。但是,过滤器仅在返回控制器的方法之后运行,这意味着在调用过滤器时上下文已丢失。

这是我要检测的方法:

@Get('/pets')
Single<List<Pet>> pets() {
petClient.list()
.onErrorReturnItem(Collections.emptyList())
}


这是客户:

@Client(id = 'pets', path = "/v1/pets")
interface PetClient extends PetOperations < Pet > {

@Override
Single <List<Pet>> byVendor(String name)

@Override
Maybe < Pet > find(String slug)
}


我还尝试将@Header参数添加到客户端的方法中,但是当我这样做时,调用将停止工作。

最佳答案

你可以做这样的事情...

@Client(id = 'pets', path = "/v1/pets")
interface PetClient extends PetOperations < Pet > {

@Override
@Header(name="some-header-name", value="some-value")
Single <List<Pet>> byVendor(String name)

@Override
Maybe < Pet > find(String slug)
}


您也可以做这样的事情...

@Client(id = 'pets', path = "/v1/pets")
interface PetClient extends PetOperations < Pet > {

@Override
// this will result in a header named "someHeaderName"
Single <List<Pet>> byVendor(String name, @Header String someHeaderName)

@Override
Maybe < Pet > find(String slug)
}


您也可以做这样的事情...

@Client(id = 'pets', path = "/v1/pets")
interface PetClient extends PetOperations < Pet > {

@Override
Single <List<Pet>> byVendor(String name, @Header('some-header-name') String someValue)

@Override
Maybe < Pet > find(String slug)
}

关于java - 在Micronaut的声明式客户端中传递自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com