我正在构建一个API(将其称为new api
),其行为类似于通往另一个Rest-API(将其称为old api
的api-gateway)。
在我的old api
中,我正在检查请求标头(像这样X-Some-Custom-Header
)并返回对该标头的响应。考虑该标头类似于本地化。
我想用一种属性标记我的new api
方法,这样我就不需要像这样指定每个方法了:
[HttpGet({id})]
public IActionResult GetSomeValue([FromHeader] xSomeCustomHeader, int id){
//some logical codes here
}
我知道必须有一种整洁的方法来执行此操作,显然您可以使用[Authorize()]
属性来执行类似的操作。
通过这种方式,我既不需要使用Resources
也不需要配置RequestLocalizationOptions
。我只想获取该值并将其传递给内部http请求(即使用Refit
来调用old api
)。
答案 0 :(得分:0)
应该可以按照Custom Model Binding in ASP.NET Core所述编写自己的 Model Binder 来创建一个自定义的绑定器,该映射器映射不在 URL 路径中的参数也没有从标头中提取属性。
更新
通过提供自定义的 IRequestBuilder (现成的实现似乎是RequestBuilderImplementation),也许还有一种方法可以进行改装。
一旦有了适合您需要的自定义实现,您就应该能够通过RestService的For<T>(HttpClient client, IRequestBuilder<T> builder)
重载告诉改用它。
希望有帮助!