Передать ответ API на другое действие

#c# #asp.net #api #asp.net-core #asp.net-web-api

Вопрос:

У меня есть одна конечная точка API для входа в систему. Как только мы введем правильное имя пользователя и пароль, мы получим следующую информацию :

 {
    "accessToken": "Some_Value",
    "accessTokenExpireAt": "Some_Value",
    "refreshToken": "Some_Value",
    "userID": "Some_Value"
}
 

Как только пользователь нажмет на кнопку «Отправить», будет выполнен приведенный ниже код.

 public async Task<ActionResult> Index(LoginModel loginModel)
        {
            using (var client = new HttpClient())
            {
                string url = "URL_ENDPOINT_FOR_LOGIN";
                client.DefaultRequestHeaders.Accept.Clear();

                var response = await client.PostAsJsonAsync(url, loginModel);

                if (response.IsSuccessStatusCode)
                {
                    var result = response.Content.ReadAsStringAsync();
 

//Здесь я получаю все значения в JSON в результате. Теперь я хочу перенаправить пользователя на страницу профиля, и на этой странице нужно вызвать другой API, который получит все сведения об этом пользователе. В результате я получаю идентификатор пользователя.

                 }
                else
                {
                    ModelState.AddModelError("", "Wrong details");
                }
            }
            return View(loginModel);
        }
 

Теперь у меня есть еще одна конечная точка API, когда мы вызываем ее, мы получаем данные пользователя, такие как имя, идентификатор электронной почты и так далее.

Мне нужно отобразить все данные пользователя в поле зрения, но только в том случае, если этот доступ будет открыт.

Поэтому я хочу знать, как я могу передать этот идентификатор доступа и идентификатор пользователя другому действию и весь URL-адрес API оттуда.

Комментарии:

1. Вам нужно будет включить код, который вы используете для обработки этого. Если все, что вам нужно сделать, это передать это accessToken следующему вызову, добавьте его в качестве параметра строки запроса/заголовка/тела запроса. Без вашего кода мы не сможем дать вам конкретный ответ.

2. @Austin Я добавил код

3. Нам также нужна подробная информация о второй конечной точке. Как он принимает параметры? Какой глагол он использует?

4. Все еще неясно, с чем у вас проблема. Мы можем попытаться быть грубыми и предположить, что вы не можете прочитать JSON… или задать свойства объектов… но нам, наверное, следует быть повежливее. Пожалуйста, поясните, в чем у вас проблема.

5. Мне нужно сделать следующее : если имя пользователя и пароль верны, то токен будет возвращен, поэтому мне нужно перенаправить пользователя на какое-то другое действие, и в этом действии мне нужно установить этот токен в заголовке и вызвать друг друга API из этого действия.

Ответ №1:

Я делал что-то подобное раньше в веб-API.

Можете ли вы попробовать это в своем методе API:

 return RedirectToAction("RedirectedAction", 
    "ControllerName", 
    new { val = value1, ..., val = valueN });
 

Где value1, … valueN-это параметры, которые вы передаете следующему методу API.

Заглушка перенаправленного метода затем:

 public async Task<ActionResult> RedirectedAction(
    string value1, string value2, ...)
{
    ...
}
 

(При необходимости измените типы параметров.)