Я новичок в .netcore, я работаю над веб-API, которые работают в контейнере докеров, и при использовании почтальона веб-API работают очень хорошо, выводя результаты. Я хочу создать программу в .netcore, вызывающую конечные точки webapi, получение ответа и использование этого конкретного ответа в других конечных точках с помощью MVC.
Объяснение дано ниже. Имя пользователя и пароль по умолчанию для администратора установлены по умолчанию, например username:admin , password: helloworld
. При первом входе администратора в систему api требуется новый личный пароль, как показано на рисунке Postman ниже.
API для входа: localhost://..../v1/users/login
Первый вопрос: Как указать значения в Авторизации - ›BasicAuth, используя .netcore. Тело api выглядит как на рисунке ниже.
После установки new_password ответ api представляет собой токен, как указано ниже.
Затем конкретный токен используется в среде для создания пользователя. Изображение для более ясной задачи приведено ниже.
Наконец, токен затем использовался для выполнения других вызовов API, таких как создание пользователя. API: https://localhost/..../v1/users
Изображение ниже.
Как новичок в языке .netcore, я действительно изо всех сил пытаюсь выполнять такие вызовы API, поскольку большинство обучающих программ, которые я пробовал, генерируют собственный токен из API, но здесь я просто хочу взять токен ответа и сохранить его, а затем использовать его в других вызовах API. Поддержка сообщества StackOverflow всегда была мне очень полезна.
Код, который я пытаюсь сделать, приведен ниже.
**Controller**
public class Login_AdminController : ControllerBase
{
[Route("/loginAdmin")]
[HttpPost]
public async Task<string> LoginAdminAsync([FromBody] dynamic content)
{
LoginAdmin L = new LoginAdmin();
var client = new HttpClient();
client.BaseAddress = new Uri("https://localhost:9090");
var request = new HttpRequestMessage(HttpMethod.Post, "/v1/users/login");
var byteArray = new UTF8Encoding().GetBytes($"<{L.username}:{L.df_Password}>");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("new_password", "helloWorld123!"));
request.Content = new FormUrlEncodedContent(formData);
var response = await client.SendAsync(request);
Console.WriteLine(response);
return content;
}
}
}
***Model***
public class LoginAdmin
{
public string username = "admin";
public string df_Password = "secret";
public string new_Password { get; set; }
}
Спасибо.