我正在嘗試HttpGet在我的 ASP.NET Core Web API 中發出請求。
問題是我不知道如何通過查詢提出獲取請求。
這是我的模型:
public class Predoslepozicie
{
[Key]
public int Id { get; set; }
[Required]
public int idZamestnanca { get; set; }
[Required]
public string Pozicia { get; set; }
[Required]
public DateTime DatumUkoncenia { get; set; }
[Required]
public DateTime DatumNastupu { get; set; }
}
控制器
// GET: api/Predoslepozicie/5
[HttpGet("{idZamestnanca}")]
public async Task<ActionResult<Predoslepozicie>> GetPredoslepozicie(int idZamestnanca)
{
var Predoslepozicie = await _context.Predoslepozicie.FindAsync(idZamestnanca);
if (Predoslepozicie == null)
{
return NotFound();
}
return Predoslepozicie;
}
idZamestnanca是 SQL 資料庫中另一個表的 id,我需要選擇所有行where id = x。
例如idZamestnanca = 9在表中出現 10 次,我需要查詢只回傳這 10 行。
當我嘗試使用 提出請求時idZamestnanca,我得到狀態 404。
uj5u.com熱心網友回復:
"When I try to make request with idZamestnanca, I get a status 404.":
404你現在得到的可能有兩個主要原因。
When Controller Hits But Returns with 404 :

假設這是您的桌子。您想
idZamestnanca從此表中搜索。這里PrimaryKey是Id。但是你想idZamestnanca在那種情況下 搜索是FindAsync(idZamestnanca)行不通的。因為so總會回來因為這是一個
List但是你已經single objectTask<ActionResult<Predoslepozicie>>在這里定義了。
Final Fixing :
替換Task<ActionResult<List<Predoslepozicie>>>這個,所以你 Controller Action應該如下所示:
[HttpGet("{idZamestnanca}")]
public async Task<ActionResult<List<Predoslepozicie>>> GetPredoslepozicie(int idZamestnanca)
{
var Predoslepozicie = _context.Predoslepozicies.Where(id => id.idZamestnanca == idZamestnanca).ToList();
if (Predoslepozicie == null)
{
return NotFound();
}
return Predoslepozicie;
}
或者您可以簡單地執行以下操作:
Good Practice :
[Route("api/[controller]")]
[ApiController]
public class FrodoNicitelController : ControllerBase
{
private readonly ApplicationDbContext _context;
public FrodoNicitelController(ApplicationDbContext context)
{
_context = context;
}
[HttpGet("{idZamestnanca}")]
public async Task<ActionResult> GetPredoslepozicie(int idZamestnanca)
{
var Predoslepozicie = _context.Predoslepozicies.Where(id => id.idZamestnanca == idZamestnanca).ToList();
if (Predoslepozicie == null)
{
return NotFound();
}
return Ok(Predoslepozicie);
}
}
Output :

When Controller Does't Hits and Returns with 404 :
在這種情況下,您沒有
Attribute routing正確發送。當您在這種情況下設定您Route Attribute的喜歡[HttpGet("{idZamestnanca}")]時,您必須在下面呼叫您的API URL喜歡:
https://localhost:7132/api/YourControllerName/101 // Need to call like this
Note:請記住,在這里你必須直接傳遞你的引數,controller然后是/backslashnot by?或如下所示
https://localhost:7132/api/YourControllerName?idZamestnanca=1 // Not like this
希望以上解釋和指導可以幫助您徹底解決問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464114.html

