在我的Angular应用程序中,从Angular调用API方法时,我会遇到错误。我必须传递两个参数。第一个一个整数值和第二个字符串值。它是可选的。
请参阅以下代码段(Typescript)
let id:number = 5;
let value: string = "";
this.http.get<string[]>(this.appService.baseUrl + 'api/File/' + id + "/" + value)
在控制器中:
[HttpGet("{id:int}/value")]
[ResponseCache(NoStore = true)]
public async Task<IActionResult> Get(int id, string value) { }
在这里,Get方法没有调用,因为值参数为空。
在您的示例中,您正在构建此URL:
/api/File/5
但是,您的控制器期望以下内容:
/api/File/5/value
如果您希望value
在这里是可选的,并且要放置在value
参数(string value
)中,则可以调整HttpGet
属性,如:
[HttpGet("{id:int}/{value?}")]
这使value
可选,并且是通过任何传递的占位符。
我只有ASP.NET Web API的经验,但据我所知,将字符串值作为空的,这会导致更改的路由。由于您没有仅采用INT的路线,因此您的请求永远不会达到您的API。您需要做的就是超载您的获取方法,而制作只需INT的方法。
您在URL中输入了变量shareType
的类型,然后将空字符串传递给变量shareValue
。在变量shareType
之后删除:number
,并为变量shareValue
分配一个值。