微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# WEB API 如何使用参数进行 HttpPost 以及如何 httpsGet 字符串并返回自定义列表

如何解决C# WEB API 如何使用参数进行 HttpPost 以及如何 httpsGet 字符串并返回自定义列表

我正在做一个 WEB API,它用客户的电子邮件生成一个随机的信用卡号。

首先,如果没有 Postman JSON 代码,我怎么能只通过 https://localhost:44355/api/ClienteDados/“在此处输入电子邮件”来发布客户电子邮件、信用卡号和 de ID。下面是我到目前为止所拥有的。我设法通过 Postman 完成,但我想在 URL 中完成。

我的班级是 ClienteDados。

内部 ID

字符串电子邮件 ID

字符串NumCartao

我的上下文是_context。

我的数据库是 ApiContext 和 DbSet ClientesDB

[HttpPost("{email}")]
    public async Task<ActionResult<ClienteDados>> PostClienteDados(string email,ClienteDados clienteDados)
    {
        //Begin
        Random rnd = new Random();
        int cardNumber1 = rnd.Next(4572,4999);
        int cardNumber2 = rnd.Next(1000,9999);
        int cardNumber3 = rnd.Next(1000,9999);
        int cardNumber4 = rnd.Next(1000,9999);
        clienteDados.NumCartao = $"{cardNumber1} {cardNumber2} {cardNumber3} {cardNumber4}";
        clienteDados.EmailId = email;
        //End

        
        _context.ClientesDB.Add(clienteDados);
        await _context.SaveChangesAsync();


        return CreatedAtAction("GetClienteDados",new { id = clienteDados.NumCartao },clienteDados.NumCartao);
    }

在我使用 EF Inmemory 注册客户信息后,我想从参数 EMAIL 制作所有信用卡的 HttpGet。因此,当他们输入 /email/"email here" 时,它会显示该电子邮件中所有信用卡号的列表。

我该如何做列表,以及如何通过字符串电子邮件进行搜索?一直只能通过int ID搜索

[HttpGet,Route("email/{email}")]
    public async Task<ActionResult<IEnumerable<ClienteDados>>> GetEmail(string email)
    {


        var cc = await _context.ClientesDB.FindAsync(email);

        return Ok(cc);

    }

上面的 Https Get 还不能工作,因为它是一个字符串,它只适用于 int ID。 预先非常感谢您。

编辑 1 所以我设法通过 url 参数获取了 List,但它向我显示了 id、电子邮件和抄送号,我如何才能将其过滤为抄送号?

List<ClienteDados> list = await _context.ClientesDB.Where(a => a.EmailId.Equals(email)).ToListAsync();
       return Ok(list);

解决方法

在您的 CreateDate 函数中尝试此代码

GetEmail

更新:

首先你可以创建一个新的TYPE

await _context.ClientesDB.Where(a => a.EmailId.Equals(email)).ToListAsync();

然后在函数内部使用这个查询

    class NEW_TYPE
    {
        public string CARD_ { get; set; }
    };

var query = from a in _context.ClientesDB where a.EmailId.Equals(email) select new NEW_TYPE { CARD_ = a.NumCartao }; var cc = await query.ToListAsync(); return cc; 将是一个 cc 列表,其中只包含卡片信息 NEW_TYPE

,

您可以参考 THIS 网站了解更多信息。

使用这个例子:

[HttpPost]
public void Test(int age)
{
    Console.Write(age);
}

您可以像这样创建请求: enter image description here

C# 将使用 url 参数并将它们带入调用中。请注意,变量名称必须与参数变量匹配才能工作。请注意我如何在两个地方使用 int ageage。你需要先把url参数。

在您的情况下,您会传递电子邮件,如下所示:

https://localhost:5443/controller/test?email=email@email.com

C# 中的函数会将字符串 email 作为函数输入变量中的第一项。 public void Test(string email)

,

改变这一行:

cv.imshow(image)

到:

List<ClienteDados> list = await _context.ClientesDB.Where(a => a.EmailId.Equals(email)).ToListAsync();
   return Ok(list);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。