asp.net 从Blazor调用API中的端点

mwkjh3gx  于 2023-05-23  发布在  .NET
关注(0)|答案(2)|浏览(154)

我有这样的服务

public Sell Sell(Guid guid, double Quantity)
{
    Sell sell = new Sell();
    var result = _connectionDB.States.Find(guid);
    sell.Name = result.Name;
    sell.EAN = result.EAN;
    sell.Profit = result.Profit;
    sell.Quantity = Quantity;
    sell.SellePriceBrutto = result.SellePriceBrutto;
    sell.GTU = result.GTU;
    sell.dateTimeSell = DateTime.Now;
    sell.PurchasePriceNetto = result.PurchasePriceNetto;
    sell.Id = Guid.NewGuid();
    _connectionDB.Sells.Add(sell);
    result.Quantity = result.Quantity - Quantity;
    _connectionDB.SaveChanges();
    return sell;
}

和控制器

[HttpPut("Sell")]
public IActionResult Sell(Guid guid, double Quantity)
{
    var result = _connectionDB.States.Find(guid);
    if (result == null)
    {
        return Ok("No product in DB");
    }
    if (result.Quantity < 0)
    {
        return Ok("No Quantiti product in DB");
    }
    var sell = _userService.Sell(guid, Quantity);
    return Ok(sell);
}

此函数执行以下操作:
根据Id,它搜索产品,更改其数量并将其添加到sold表。生成链接:https://localhost:7038/api/Warhause/Sell?guid=76f42455-0885-4edb-9d0a-0ebdd7610e4f&Quantity=1
在 Swagger 的一面,它工作得很好。HttpClient中是否有任何函数调用这样的端点?

wkyowqbh

wkyowqbh1#

是的,您可以使用HttpClient类调用WCF服务的端点。下面是一个如何使用HttpClient发出PUT请求的示例:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using (HttpClient client = new HttpClient())
        {
            Guid guid = new Guid("76f42455-0885-4edb-9d0a-0ebdd7610e4f");
            double quantity = 1;

            // Construct the URL with query parameters
            string url = $"https://localhost:7038/api/Warhause/Sell?guid={guid}&Quantity={quantity}";

            // Make the PUT request
            HttpResponseMessage response = await client.PutAsync(url, null);

            // Check the response status
            if (response.IsSuccessStatusCode)
            {
                // Read the response content
                Sell sell = await response.Content.ReadAsAsync<Sell>();
                Console.WriteLine($"Sell successful: {sell.Name}");
            }
            else
            {
                Console.WriteLine($"Sell failed: {response.StatusCode}");
            }
        }
    }
}

确保将占位符值替换为您希望在请求中发送的实际guidquantityHttpClient类允许您发送HTTP请求并处理响应。在这个例子中,我们使用PutAsync向指定的URL发出PUT请求。
然后,您可以根据返回的状态代码处理响应。如果请求成功(状态码200-299),您可以读取响应内容并将其反序列化到Sell对象或任何其他相关类中。
记住包含必要的using语句,并调整代码以适应您的特定场景。

yzxexxkh

yzxexxkh2#

谢谢你的回答,我不知道你可以在这个函数中传递null。这对我很有效:

private async Task Send()
    {
        await HttpClient.PutAsync($"api/Warhause/Sell?guid={Id}&Quantity={Amount}", null);
        await BlazoredModal.CloseAsync();
    }

相关问题