如何解决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);
}
C# 将使用 url 参数并将它们带入调用中。请注意,变量名称必须与参数变量匹配才能工作。请注意我如何在两个地方使用 int age
和 age
。你需要先把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 举报,一经查实,本站将立刻删除。