我的想法是,通過這些ItemController方法,我應該能夠:
- 當點擊 "item/query? "時,按條形碼獲取專案。
- 當點擊 "item/query?barcode={barcode}"時,按條形碼獲取專案 。
- 當點擊 "item/query?discount={discount}"時,按折扣獲得專案 。
- 當點擊 "item/query?name={name}"時,按名稱獲取物品 。
- 當點擊 "item/query?category={category}"時,按類別獲取專案 。
而這是我在GET動詞下的動作代碼:
[HttpGet("query/{barcode:int}") ]
public async Task<IActionResult> GetByBarcode(int barcode)
{
var item = ...
return Ok(item);
}
[HttpGet("query/{discount:int}") ]
public async Task<IActionResult> GetByDiscount(int discount)
{
var items = ...
return Ok(items);
}
[HttpGet("query/{name}") ]
public async Task<IActionResult> GetByName(string name)
{
var items = ...
return Ok(items)。
}
[HttpGet("query/{category}") ]
public async Task<IActionResult> GetByCategory(string category)
{
var items = ...
return Ok(items);
問題是,當我試圖訪問任何這些操作時,我一直得到405 Method Not Allowed。我不知道這是否是方法之間的歧義問題,你能幫我解決嗎?
編輯:
ItemController.cs的標題:
using InventoryWebApi.DataAccess;
using InventoryWebApi.DTO;
using InventoryWebApi.Models;
using Microsoft.AspNetCore.Mvc;
using System.Linq
using System.Linq.Tasks
using System.Threading.Tasks;
命名空間 InventoryWebApi.Controllers
{
[ApiController]
[Route("[控制器]")]
public class ItemController : ControllerBase
{
private readonly IRepository repository;
public ItemController(IRepository repository)。
...
uj5u.com熱心網友回復:
你使用路由的方式是錯誤的
。你的代碼甚至不會被運行。 你的動作應該是
[HttpGet("query/getbybarcode/{barcode:int})]
public async Task<IActionResult> GetByBarcode(int barcode)
[HttpGet("query/getbydiscount/{discount:int}") ]
public async Task<IActionResult> GetByDiscount(int discount)
對于這個路線,你必須使用這個尿液
。.../item/query/getbybarcode/{barcode}。
..../item/query/getbydiscount/{discount}。
如果你仍然想用你的方式來創建url,你將不得不改變屬性路由
。[HttpGet("query/getbybarcode)]
public async Task<IActionResult> GetByBarcode(int barcode)
[HttpGet("query/getbydiscount")
public async Task<IActionResult> GetByDiscount(int discount)
而你的URL應該是
.../item/query/getbydiscount? discount={discount}"
..../item/query/getbybarcode?barcode={barcode}"
Update
如果你仍然需要在你的學生專案中使用所有的尿液,那么唯一的方法是對所有的尿液使用一個動作
。[HttpGet("query")]
public async Task<IActionResult> Get(int? barcode, int? discount,
string name, string category )
{
if (barcode !=null) ...
else if (discount!=null) ...
var item = ...
回傳Ok(item)。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328661.html
標籤:
下一篇:HttpClient回應messege"Theoperationwascanceled."。postman中的json結果是[]?如何從API獲得所有資料
