我们在您的一个 API 上使用 Refit 来为该 API 创建和共享客户端包。
ICategoryApi.cs
[Post("/category")]
Task CreateCategoryAsync([Body] CategoryCommandDto createCategoryCommandDto);
并且使用控制器一切正常
CategoryController.cs
[ApiController]
[Route("[controller]")]
public class CategoriesController : ControllerBase
{
[HttpPost]
[ProducesResponseType((int)HttpStatusCode.Created)]
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
public async Task<IActionResult> CreateCategory([FromBody] CategoryCommandDto createCategoryCommandDto)
{
//some code
}
}
问题是现在我们已经添加了 api 版本控制,并且我们选择了按路由进行版本控制。
所以现在端点/category
看起来像,我们将很快/v1/category
创建一个。/v2/category
有没有办法配置refit
(通过属性或类似的)它来理解我的版本化路由?
我想避免为每个新版本的 API 编写一个新客户端,并在端点路由中包含该版本,例如
ICategoryApiV1.cs
[Post("/v1/category")]
Task CreateCategoryAsync([Body] CategoryCommandDto createCategoryCommandDto);
想象一下,客户端更大,有很多方法,而不仅仅是一个。此外,并非所有方法都可能在版本之间发生变化。