我想獲取一個(gè)從此 Angular 打字稿前端代碼構(gòu)建的端點(diǎn) getPartNumbersFromManufacture(manufactureNameId : Number) { let parameter = new HttpParams().set("FKManufactureNameId", manufactureNameId.toString()) return this.http.get<ManufacturePartNumber[]>(this.manufactureUrl + '/PartNumber', {params: parameter}).pipe( tap(data => console.log('All: ' + JSON.stringify(data))), catchError(this.handleError) ); }這會(huì)產(chǎn)生如下所示的請(qǐng)求:Request URL: https://localhost:5001/api/Manufacture/PartNumber?FKManufactureNameId=14703Request Method: GETStatus Code: 200 OKRemote Address: [::1]:5001Referrer Policy: no-referrer-when-downgrade.netcore C# 代碼如下所示,端點(diǎn)被擊中,但ManufacturerNameID 始終=0,如果我嘗試將其更改為字符串,則它為空。 [Route("api/Manufacture")] public class ManufactureController : ControllerBase { ... [HttpGet("PartNumber/{FKManufactureNameId=manufactureNameID}")] public IEnumerable<Views.ManufacturePartNumber> PartNumbers(int manufactureNameID) //pass the manufacture id from the frontend and get the part numbers associated with this manufacturer { TrackingContext context = new TrackingContext(); IEnumerable<ManufacturePartNumber> manufacturePartNumbers = context.ManufacturePartNumber.Where(n => n.FkManufactureNameId == manufactureNameID); List<Views.ManufacturePartNumber> manufacturePartNumberView = new List<Views.ManufacturePartNumber>(); for (int i = 0; i < manufacturePartNumbers.Count(); i++) { manufacturePartNumberView.Add(new Views.ManufacturePartNumber(manufacturePartNumbers.ElementAt(i))); } return manufacturePartNumberView; } ...}我做錯(cuò)了什么,我希望我的 C# 代碼處理這個(gè)具有等號(hào)的查詢參數(shù),因?yàn)檫@似乎是“HttPClient”類在傳遞“HttpParams”對(duì)象時(shí)構(gòu)建查詢參數(shù)的標(biāo)準(zhǔn)方式。我知道如何處理沒有“=”的情況,但我猜“=”是新的標(biāo)準(zhǔn)/最佳實(shí)踐?
1 回答

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的 api 聲明似乎不準(zhǔn)確。
我相信這就是您想要做的:
[HttpGet("PartNumber")] /* <--- */ public IEnumerable<Views.ManufacturePartNumber> PartNumbers(/* --> */[FromQuery]int manufactureNameID) {...
您希望從QueryString中獲取參數(shù),因此您可以使用[FromQuery]
參數(shù)旁邊的屬性來(lái)指示,例如:
[FromQuery]int manufactureNameID
此外,您的[HttpGet]
屬性不需要添加任何其他內(nèi)容,但“方法路由”在本例中是 [HttpGet("PartNumber")]
- 1 回答
- 0 關(guān)注
- 131 瀏覽
添加回答
舉報(bào)
0/150
提交
取消