我正在使用Angular 2向服务器发送http请求。 服务器正在使用ASP.Net运行。
我的API:
public class LagerController : ApiController
{
public IHttpActionResult RepHistorie(string vnr, string lagerort)
{
...
}
}
所以我会用
调用APIhttp://123.456.7.89/api/lager?vnr=W17291092373&lagerort=0382691395
使用名为postman的工具时,这可以正常工作,您可以测试API。
但是当使用Angular 2发布帖子请求时,它不起作用。 它说没有找到HTTP资源。
Angular 2:
submit() {
var body = 'vnr=W17291092373&lagerort=0382741400';
var link = 'http://123.456.7.89/api/lager';
this.http.post(link, body)
.subscribe(data => {
console.log(data);
}, error => {
console.log("Oooops!");
});
}
似乎没有正确添加参数。
修改:更改了代码
答案 0 :(得分:1)
这需要澄清,因为上面的API似乎是一个GET请求。
如果是POST请求,那么您应该在运行API时使用整个URL
如果您想提交对象,则应使用[FromBody]作为参数 实施例
[HttpPost]
public IHttpActionResult( [FromBody]YourObject item ) {
}
==== 客户端
var postUrl = 'http://123.456.7.89/api/lager?vnr=W17291092373&lagerort=0382691395';
var postObject = {};
http.post(postUrl,postObject)
对于您想要使用QueryString的GET请求
[HttpGet]
public IHttpActionResult RepHistorie([FromQuery]string vnr,[FromQuery]string lagerort){
...
}
====
// Query string can be built using RequestOptionsArgs as well
var builtUrl = 'http://123.456.7.89/api/lager?vnr=W17291092373&lagerort=0382691395';
http.get(builtUrl)
替代方式是
var getUrl = 'http://webapi/api/lager';
var requestOptions = {};
http.get(getUrl,requestOptions);
参考:
Angular HTTP:https://angular.io/api/http/Http,检查get()和post()方法
RequestOptionsArgs:https://angular.io/api/http/RequestOptionsArgs