[英]C# WEB API How to HttpPost with Parameter and how to httpsGet string and return custom List
我正在做一個 WEB API 與客戶 email 生成一個隨機信用卡號。
First, how can I can, without Postman JSON code, Post the clients email and the credit card number and de ID just by https://localhost:44355/api/ClienteDados/"Typing the email here". 以下是我到目前為止所擁有的。 我設法用 Postman 做到這一點,但我想在 URL 中做到這一點。
我的 Class 是 ClienteDados。
內部標識
字符串電子郵件 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”時,它會顯示 email 中所有信用卡號的列表。
我該如何做列表,如何通過字符串 Email 進行搜索? 我一直只能通過 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 參數獲取列表,但它向我顯示了 id、email 和 CC 編號,我怎樣才能將其過濾為 CC 編號?
List<ClienteDados> list = await _context.ClientesDB.Where(a => a.EmailId.Equals(email)).ToListAsync();
return Ok(list);
在您的GetEmail
function 中嘗試此代碼
await _context.ClientesDB.Where(a => a.EmailId.Equals(email)).ToListAsync();
更新:
首先你可以創建一個新的TYPE
class NEW_TYPE
{
public string CARD_ { get; set; }
};
然后在 function 里面使用這個查詢
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
將是一個只包含卡片信息List<NEW_TYPE>
的NEW_TYPE
列表
您可以參考此網站以獲取更多信息。
使用這個例子:
[HttpPost]
public void Test(int age)
{
Console.Write(age);
}
C# 將使用 url 參數並將它們帶入調用。 請注意,變量名稱必須與參數變量匹配才能工作。 注意我是如何在這兩個地方使用int age
和age
的。 您需要先放置 url 參數。
在您的情況下,您將通過 email,如下所示:
https://localhost:5443/controller/test?email=email@email.com
並且 c# 中的 function 將字符串 email 作為 ZC1C425268E68385D1AB507 輸入變量中的第一項。 public void Test(string email)
改變這一行:
List<ClienteDados> list = await _context.ClientesDB.Where(a => a.EmailId.Equals(email)).ToListAsync();
return Ok(list);
至:
var list = _context.ClientesDB.Where(a => a.EmailId.Equals(email)).Select(s => new { NumCartao = s.NumCartao }).ToList();
return Ok(list);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.