Мы использовали Refit на одном из ваших API для создания и публикации клиентского пакета для этого 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);
Представьте, что клиент больше и имеет много методов, а не только один. Также не все методы могут меняться между версиями.