【问题标题】:POST to two APIs in one ControllerPOST 到一个控制器中的两个 API
【发布时间】:2021-12-30 21:07:35
【问题描述】:

我再次问这个问题是因为我最初的问题没有得到答案,所以我将尝试简化它

我有一个控制器和两个不同的解决方案,每个都有一个模型。

在其中一个控制器 (OrdersController) 中,我想发布发送到另一个名为 Basket 的模型的数据。我想将以下内容发布到 OrdersController:

{
  "identifier": "string"
}

我也想通过以下 url 发送到我的篮子模型:

https://localhost:5500/api/Basket/{identifier}

这是我在 OrderControllers 中的控制器:

 [HttpPost]
        public async Task<ActionResult<OrderDTO>> PostOrderDTO(OrderDTO orderDTO)
        {
            // TODO Contact BasketService (GET /api/Baskets/{identifier} and take out 'identifier' and post to BasketService


            // Generate Order (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);
        }

我该怎么做?

提前致谢

原问题: Passing String from Database to Another Database in .NET (Microservices)

【问题讨论】:

  • 您可以使用HttpClient 向另一个控制器发送请求。
  • @PoulBak 我该怎么做?像这样 ?使用 var httpResponseMessage = await httpClient.PostAsync("localhost:5700/api/OrderDTO", orderJson);顺便谢谢你的帮助
  • 这里是一个简单的例子:newbedev.com/….
  • 当您使用HttpClient 时,您可以发送接收控制器理解的任何内容,包括查询字符串。
  • @PoulBak 非常感谢,我要去看看并尝试一下 :)

标签: c# .net microservices


【解决方案1】:

如果您的控制器名称是“OrdersController”并且控制器是 post, 你的网址应该是

https://localhost:5500/api/Orders

您不能使用 queryString 将模型发送到控制器。

【讨论】:

  • 是的,我的 POST 网址是 /api/Orders 但我如何将“标识符”密钥也发送到我的其他 api?感谢您的帮助
  • 您不能使用 queryString 将模型发送到控制器 - 真的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2017-02-17
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多