Angular 2 HTTP post没有找到HTTP资源

时间:2017-07-18 19:03:19

标签: asp.net angular api asp.net-web-api

我正在使用Angular 2向服务器发送http请求。 服务器正在使用ASP.Net运行。

我的API:

public class LagerController : ApiController
{
    public IHttpActionResult RepHistorie(string vnr, string lagerort)
    {
        ...
    }
}

所以我会用

调用API
http://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!");
    });
}

似乎没有正确添加参数。

修改:更改了代码

1 个答案:

答案 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);

参考: