我是RxJ的新手。
我们有一个DotNetCore api,它返回一个响应模型,并带有通用数据:
public class SingleModelResponse<T> : ISingleModelResponse<T>
{
public Boolean DidError { get; set; }
public String ErrorMessage { get; set; }
public T Data { get; set; }
}
控制器以如下方式返回它:
[HttpGet]
[Route("{organisationId}/stats")]
public async Task<IActionResult> GetStats(int organisationId)
{
var response = new SingleModelResponse<OrganisationStatsDTO>();
try
{
var result = await _service.GetStatsAsync(organisationId);
response.Data = result;
}
catch (Exception ex)
{
response.DidError = true;
response.ErrorMessage = ex.Message;
}
return response.ToHttpResponse();
}
我的角度服务已设置为接收OrganistionStats:
loadStats(organisationId: number): Observable<OrganisationStats> {
const url = '/api/Organisation/' + organisationId + '/stats';
return this.http.get<OrganisationStats>(url).pipe(
map(response => response),
tap(data => console.log('Stats: ' + JSON.stringify(data))),
catchError(this.handleError)
);
}
麻烦的是返回的不是OrganisationStats,而是SingleModelResponse。我在解决如何更改服务以从data属性中提取OrganisationStats时遇到麻烦。
loadStats(organisationId: number): Observable<OrganisationStats> {
const url = '/api/Organisation/' + organisationId + '/stats';
return this.http.get<SingleModelResponse>(url).pipe(
map(response => response),
tap(data => console.log('Stats: ' + JSON.stringify(data))),
catchError(this.handleError)
);
}
答案 0 :(得分:0)
好吧,事实证明这很简单。在服务中,我用http.get(url)替换了get(url),警告消失了。
loadStats(organisationId: number): Observable<OrganisationStats> {
const url = environment.api_root + '/api/Organisation/' + organisationId + '/stats';
return this.http.get<any>(url).pipe(
map(response => response.data),
tap(data => console.log('Stats: ' + JSON.stringify(data))),
catchError(this.handleError)
);
}