我想获取一个从此 Angular 打字稿前端代码构建的端点 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) ); }这会产生如下所示的请求: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# 代码如下所示,端点被击中,但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; } ...}我做错了什么,我希望我的 C# 代码处理这个具有等号的查询参数,因为这似乎是“HttPClient”类在传递“HttpParams”对象时构建查询参数的标准方式。我知道如何处理没有“=”的情况,但我猜“=”是新的标准/最佳实践?
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
您的 api 声明似乎不准确。
我相信这就是您想要做的:
[HttpGet("PartNumber")] /* <--- */ public IEnumerable<Views.ManufacturePartNumber> PartNumbers(/* --> */[FromQuery]int manufactureNameID) {...
您希望从QueryString中获取参数,因此您可以使用[FromQuery]
参数旁边的属性来指示,例如:
[FromQuery]int manufactureNameID
此外,您的[HttpGet]
属性不需要添加任何其他内容,但“方法路由”在本例中是 [HttpGet("PartNumber")]
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消