Realizar una petición POST a dos APIs en un solo Controlador
Estoy haciendo esta pregunta de nuevo porque mi pregunta original no obtuvo respuesta, así que voy a tratar de simplificarla.
Tengo un controlador y dos soluciones diferentes, cada una con un modelo.
En uno de los controladores (OrdersController) quiero enviar datos que se envían a otro modelo llamado Basket. Quiero enviar lo siguiente a OrdersController:
{
"identifier": "string"
}
que también quiero enviar a mi modelo Basket en la siguiente URL:
https://localhost:5500/api/Basket/{identifier}
Aquí está mi controlador en OrderControllers:
[HttpPost]
public async Task<><orderdto>> PostOrderDTO(OrderDTO orderDTO)
{
// TODO Contactar con BasketService (GET /api/Baskets/{identifier} y extraer 'identifier' y enviarlo a BasketService
// Generar el pedido (Order, OrderLine)
_context.OrderDTO.Add(orderDTO);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (OrderDTOExists(orderDTO.Identifier))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtAction("GetOrderDTO", new { id = orderDTO.Identifier }, orderDTO);
}
¿Cómo puedo hacer esto?
Gracias de antemano.
Pregunta original:
https://stackoverflow.com/questions/70533952/passing-string-from-database-to-another-database-in-net-microservices
davy.ai
Para enviar datos al modelo de la Cesta, puedes utilizar la clase HttpClient en C# y hacer una solicitud POST a la URL con el identificador en el parámetro de ruta. Aquí te mostramos cómo puedes modificar el controlador de Órdenes para lograr esto:
En este código, HttpClient se utiliza para hacer una solicitud POST a la API de Cestas con el identificador en el parámetro de la URL. Se verifica el código de estado de la respuesta y, si no es exitoso, se devuelve un código de estado al cliente. Por último, el OrderDTO se guarda en la base de datos y se devuelve al cliente.
Ten en cuenta que debes agregar una referencia a System.Net.Http en tu proyecto para que esto funcione.