Asp Net Core: проблема с почтовым запросом HttpClient: имя метода вместо параметраC#

Место общения программистов C#
Ответить
Anonymous
 Asp Net Core: проблема с почтовым запросом HttpClient: имя метода вместо параметра

Сообщение Anonymous »

Полезно знать: это немного странное решение, но это упражнение, которое мне приходится выполнять в рамках обучения в OpenClassrooms.
В решении Asp Net Core у меня есть 4 проекта:
  • HspFrontEnd — это проект AsP Net Core Mvc.
  • OcelotGateway — пустой проект с пакетом Ocelot Nuget.
  • BookingAppointmentApi — проект Asp Net Web Api для службы бронирования встреч.
  • ConsultantCalendarApi — проект Asp Net Web Api, позволяющий проверять доступность календаря консультантов. li>
В форме записи на прием я ввожу имя консультанта, но мне приходится использовать Руководство консультанта, чтобы проверить наличие места. Вот здесь у меня проблема. Из BookingAppointmentApi я буду искать Guid в ConsultantCalendarApi следующим образом:
var consultantIdString = $"https://localhost:8884/consultants/chec ... Consultant" +
$"?consultantName={model.ConsultantName}";

var _httpClient = _httpClientFactory.CreateClient();

var consultantIdResponse = await _httpClient.GetAsync(consultantIdString);

В настоящее время model.ConsultantName = "Bob".
Но здесь:
consultantName = "GetGuidConsultant"
[HttpGet("checkAvailability/{consultantName}")]
public async Task GetGuidConsultant(string consultantName)

Я предоставляю вам файлы, которые считаю важными и которые помогут мне.
BookingController в HspFrontEnd:
[HttpPost]
public async Task Create(AppointmentDto appointment)
{
var content = new StringContent(JsonSerializer.Serialize(appointment), Encoding.UTF8, "application/json");

var response = await _httpClient.PostAsync("/gateway/appointments", content);

if (response.IsSuccessStatusCode)
{
_logger.LogInformation($"{response.StatusCode} : Appointment added successfully");

return RedirectToAction("Index");
}
else
{
_logger.LogError($"{response.StatusCode} : Something went wrong");

return View();
}
}

AppointmentDto в HspFrontEnd:
public class AppointmentDto
{
public Guid Id { get; set; }
public string PatientName { get; set; }
public string ConsultantName { get; set; }
public DateTime AppointmentDate { get; set; }
}

Контроллер AppointmentsController в BookingAppointmentApi:
[HttpPost]
public async Task CreateOneAppointment(AppointmentModel model)
{
if (model == null)
{
_logger.LogError("Invalid appointment data");

return NotFound();
}

var consultantIdString = $"https://localhost:8884/consultants/chec ... Consultant" +
$"?consultantName={model.ConsultantName}";

var _httpClient = _httpClientFactory.CreateClient();

var consultantIdResponse = await _httpClient.GetAsync(consultantIdString);

if (consultantIdResponse.IsSuccessStatusCode)
{
var consultantIdStringContent = await consultantIdResponse.Content.ReadAsStringAsync();
var consultantId = Guid.Parse(consultantIdStringContent);

var checkAvailabilityString = $"https://localhost:8884/consultantcalend ... ailability" +
$"?consultantId={consultantId}" +
$"&appointmentDate={model.AppointmentDate}";

var isAvailableResponse = await _httpClient.GetAsync(checkAvailabilityString);

if (isAvailableResponse.IsSuccessStatusCode)
{
var isAvailableStringContent = await isAvailableResponse.Content.ReadAsStringAsync();
var isAvailable = bool.Parse(isAvailableStringContent);

if (!isAvailable)
{
return BadRequest("Ko");
}
}
}

await _repository.CreateAppointmentAsync(model);

_logger.LogInformation($"New appointment created successfully at {DateTime.UtcNow.ToLocalTime()}");

return CreatedAtAction(nameof(GetOneAppointment), new { appointmentId = model.Id }, model);
}

Модель AppointmentModel в BookingAppointmentApi:
public class AppointmentModel
{
public Guid Id { get; set; }
public string PatientName { get; set; }
public string ConsultantName { get; set; }
public DateTime AppointmentDate { get; set; }
}

Контроллер консультантов в ConsultantCalendarApi:
[HttpGet("checkAvailability/{consultantName}")]
public async Task GetGuidConsultant(string consultantName)
{
_logger.LogInformation($"Consultant name: {consultantName}");

var consultant = await _repository.GetConsultantIdByNameAsync(consultantName);

if (consultant == null)
{
_logger.LogError($"Consultant {consultantName} not found");

return NotFound();
}

_logger.LogInformation($"Consultant {consultantName} retrieved successfully at {DateTime.UtcNow.ToLocalTime()}");

return Ok(consultant);
}

Метод GetGuidConsultant работает в Swagger.
В режиме отладки имя консультанта, введенное в пользовательский интерфейс, — Боб до тех пор:
var consultantIdString = $"https://localhost:8884/consultants/chec ... Consultant" +
$"?consultantName={model.ConsultantName}";


Подробнее здесь: https://stackoverflow.com/questions/782 ... ad-of-para
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»