c# - 自定义属性标记自定义标头值的 API 方法
问题描述
我正在构建一个 API(我们将其称为new api
),其行为类似于另一个 Rest-API 的 api 网关(我们将其称为old api
)。在我中,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
)。
解决方案
应该可以通过编写您自己的模型绑定器(如 ASP.NET Core 中的自定义模型绑定中所述)来创建一个自定义绑定器,该绑定器映射不在URL路径中的参数,也没有要从标头中提取的属性。
更新
通过提供自定义IRequestBuilder(开箱即用的实现似乎是RequestBuilderImplementation),可能还有一种方法可以在改装中做到这一点。
一旦你有一个适合你需要的自定义实现,你应该能够告诉 refit 通过RestService的For<T>(HttpClient client, IRequestBuilder<T> builder)
重载来使用它。
希望能帮助到你!
推荐阅读
- python - 如何使用 spacy(或其他库)检测它是否是句子中动词的否定?
- javascript - Chrome 扩展开发者 - 如何匹配来自用户指定网站的内容脚本 url?
- r - Zotero BibTeX 文件中缺少元数据
- python - cv2.BackgroundSubtractorMOG
- soap - .Net Core 3.1 中带有 MTOM 的 SOAP - ChillKat?
- ios - 将 Admob 横幅添加到 messagekit
- javascript - 排序计算值和更新计算值vue
- python - 使用矩阵变换进行 3D 图像配准
- excel - 剑道网格如何自动调整excel导出行高?
- node.js - 为 Websocket 分配唯一 ID 并检测哪个连接关闭