在我的angular应用程序中,从angular调用API方法时遇到错误。我必须传递两个参数。第一个是整数值,第二个是字符串值。它是可选的。
请参见下面的代码段(打字稿)
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) { }
由于value参数为空,因此Get方法未调用。
答案 0 :(得分:4)
在您的示例中,您正在构建此URL:
/api/File/5
但是,您的控制器要求满足以下条件:
/api/File/5/value
如果您希望此处value
是可选的并被放置到value
参数(string value
)中,则可以调整HttpGet
属性,如下所示:< / p>
[HttpGet("{id:int}/{value?}")]
这使value
是可选的,并且是传入任何内容的占位符。
答案 1 :(得分:3)
我只具有asp.net Web API的经验,但据我所知,将字符串值设置为空会导致路由更改。由于您没有只采用int的路由,因此您的请求永远不会到达您的api。您需要做的是重载Get方法并使一个仅接受一个int的方法。
答案 2 :(得分:0)
您在URL中输入了变量shareType
的类型,并且正在为变量shareValue
传递空字符串。删除变量:number
之后的shareType
,并为变量shareValue
分配一个值。