0

我的工作相互e.g A和B.角2 +网页API - 发布数据不能正常工作

在项目链接的两个项目 - 我实现了实体框架,从数据库中提取数据。

在项目B中 - 我已经实现了Angular 2,从项目A获取数据并将其显示在屏幕上(客户端)。

这两个项目都与API连接。项目B的API调用项目A的API从数据库获取数据并显示到屏幕(客户端)。取数据'GET'请求正常工作。

问题:当用户填写表单并发布数据时,'POST'方法不起作用。如果我在项目B中实现相同的[HttpPost]方法,那么它正在工作,但我想要将数据发布到项目B的方法。

更容易明白,我已经试过下面图形来实现这样的情况:(高亮红色部分不工作)

enter image description here

与角2,发布数据的工作如下罚款:

return this.http 
     .post(projectAUrl, JSON.stringify({ stateName: stateName }), { headers: this.headers }) 
     .toPromise() 
     .then(res => res.json().data as AnalyticsState) 

[HttpPost]法在项目A的控制器实现如下:

[Route("api/States")] 
[HttpPost] 
public IHttpActionResult PostSaveState([FromBody]string stateName) 
{ 
    return null; 
} 

提交表格后,这种方法不触发A计划(通过把断点试过),同样的方法工作,如果我在B项目的实施

我必须做这两个项目的API东西发布数据或我错过了一些愚蠢的事情来实现发布数据到数据库?新的dotNet核心和角2,试图了解项目流程。

注意:我不想在项目B中实现实体框架。项目流程应该与附加图像相同。

到目前为止,我尝试了很多东西,但没有运气,几个环节是:

httpclient call to webapi to post data not working

.NET MVC 4 WebAPI POST not working

https://angular.io/docs/ts/latest/tutorial/toh-pt6.html

工作:下面从项目获取数据角功能A工作正常。

getStates() { 

    let ProjectAUrl = 'http://localhost:9043/api/GetStates'; 

    return this.http.get(ProjectAUrl) 
     .map(res=>res.json() 
     .subscribe(States => this.States = States); 
} 

不工作:当用户提交表单,我打电话以下角度的功能。在下面的函数中,如果我使用ProjectBUrl,控件将进入项目B的控制器方法(我不想)。但是,如果我使用ProjectAUrl,控件不会发送到项目A的控制器。

SaveState(stateName: string): Promise<State> { 

    let ProjectAUrl = 'http://localhost:9043/api/States?stateName='+stateName+''; 
    let ProjectBUrl = 'api/States?stateName='+stateName+''; 

    return this.http 
     .post(ProjectAUrl , JSON.stringify({ stateName: stateName }), { headers: this.headers }) 
     .toPromise() 
     .then(res => res.json().data as State) 
     .catch(this.handleError); 
} 

那么有没有可能直接从项目B的角度函数调用项目A的控制器方法? 将角度控制功能传递给项目B的控制器,然后从项目B的控制器调用项目A的控制器。

对不起,让它有点混乱和复杂!但任何帮助将不胜感激。

任何想法如何在Angular 2中通过API发布数据?

+0

您正在发布一个对象,但您希望从API中获取一个字符串参数。另外,如果我在项目B中实现,同样的方法正在工作,你不需要stringfy – Fals

+0

'。你的意思是有些方法通过B到A,但是Angular有时直接直接访问A?看起来Angular知道这两个API。 – Win

+0

嗨@Win,谢谢你的回复。我更新了我的问题,更详细地实现了获取和发布数据的角度2函数。我只是通过调用url来调用Project A。 – Riddhi

回答

-1
  • 从控制器动作参数中删除FromBody属性
  • 使字符串参数到控制器的行动路线属性路线(“API /美国/ Statename的/ {Statename的}”)
  • 呼叫客户端后应在URL上包含stateName
+0

如果他这样做,他会通过URI或身体内传递参数。 – Fals

+0

正确,最后一个项目符号更新。 – dudeNumber4