Пользовательский атрибут, отмечающий метод API для пользовательских значений заголовка - PullRequest
0 голосов
/ 21 ноября 2018

Я создаю API (давайте назовем его как new api), который ведет себя как API-шлюз к другому Rest-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).

1 Ответ

0 голосов
/ 21 ноября 2018

Должно быть возможно путем написания собственного связывателя модели , как описано в Связывание пользовательской модели в ASP.NET Core , для создания настраиваемого связывателя, который отображает параметры, которых нет в URL путь или атрибут не должны быть извлечены из заголовков.

Обновление

Возможно, есть способ сделать это и при переоснащении, поставивпользовательский IRequestBuilder (стандартная реализация выглядит так: RequestBuilderImplementation ).

Как только у вас будет пользовательская реализация, которая соответствует вашим потребностям, вы сможете указать refit использовать ее через RestService For<T>(HttpClient client, IRequestBuilder<T> builder) перегрузку.

Надеюсь, этопомогает!

...