将 API 响应传递给另一个操作
Posted
技术标签:
【中文标题】将 API 响应传递给另一个操作【英文标题】:Pass API response to another action 【发布时间】:2021-11-20 21:51:03 【问题描述】:我有一个用于登录的 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,该 API 将获取该用户的所有详细信息。结果我得到了 userId。
else
ModelState.AddModelError("", "Wrong details");
return View(loginModel);
现在我多了一个 API 端点,当我们调用它时,我们会得到该用户的详细信息,例如名字、电子邮件 ID 等。
我需要在 View 中显示所有用户详细信息,但前提是该 accessToken 即将到来。
所以我想知道如何将这个 accessToken 和 userId 传递给另一个操作以及那里的所有 API url。
【问题讨论】:
@Austin 我已添加代码 仍然不清楚你有什么问题。我们可以尝试粗鲁地猜测您无法读取 JSON……或设置对象的属性……但我们可能应该比这更好。请说明您有什么问题。 我需要完成此操作:如果用户名和密码正确,则将返回令牌,因此我需要将用户重定向到其他操作,并且在该操作上我需要在标头中设置该令牌并从该操作中调用另一个 API。 嗨@SamiIn,获取令牌后,您可以将令牌存储在本地存储或会话中,然后当您重定向到另一个操作或查看页面时,您可以从本地存储或会话,然后添加到请求头中。 【参考方案1】:我之前在 Web API 中做过类似的事情。
你能在你的 API 方法中试试这个吗:
return RedirectToAction("RedirectedAction",
"ControllerName",
new val = value1, ..., val = valueN );
其中 value1, ... valueN 是您传递给下一个 API 方法的参数。
然后重定向的方法存根是:
public async Task<ActionResult> RedirectedAction(
string value1, string value2, ...)
...
(根据需要调整参数类型。)
【讨论】:
以上是关于将 API 响应传递给另一个操作的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2.0 - 如何从子类 AFHTTPSessionManager 成功将响应传递给另一个类
使用 Retrofit 发送 POST 请求并接收 Json 响应无法使用响应数据我需要将其传递给另一个活动
REACTJS 和 API 将 Api 的值传递给另一个页面