簡體   English   中英

C# WEB API 如何使用參數 HttpPost 以及如何 httpsGet 字符串並返回自定義列表

[英]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 ageage的。 您需要先放置 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM