这是从 ASP.NET Core Web API 中的 EF Core 5 获得的啥样的响应 [关闭]

Posted

技术标签:

【中文标题】这是从 ASP.NET Core Web API 中的 EF Core 5 获得的啥样的响应 [关闭]【英文标题】:What kind of response is this obtained from EF Core 5 in ASP.NET Core Web API [closed]这是从 ASP.NET Core Web API 中的 EF Core 5 获得的什么样的响应 [关闭] 【发布时间】:2021-12-22 07:28:41 【问题描述】:

我的 ASP.NET Core Web API 控制器中有这个方法

[HttpGet]
public async Task<ActionResult<IEnumerable<Oferta>>> GetOfertas()

  return await _context.Ofertas.ToListAsync();

然后我的 Angular App 服务中有这个方法

getOfertas(): Observable<Oferta[]> 
return this.http.get<Oferta[]>(`$this.urlWebAPI/ofertas`)
  .pipe(
    tap(data=>console.log('OfertasService-get(): ', data)
    ),
    catchError(this.handleError)
  )

当我发送这样的请求以从我的组件中填充我的表格时

ngOnInit(): void 
this.dataService.getOfertas()
.pipe(
  tap(item=>console.log(item))
)
.subscribe(
  data=>
    this.ofertas=data;
    this.ofertasOriginal=this.ofertas;
  
)
,err=>console.log(err),
()=>;


<div class='table-responsive'>
      <table class='table'>
        <thead>
          <tr>
            <th>Id</th>
            <th>Id Presentada</th>
            <th>Descripción</th>
            <th>Organismo</th>
            <th>Fª Presentación</th>
            <th>Presupuesto</th>
          </tr>
        </thead>
        <tbody>
          <tr *ngFor="let oferta of ofertas.$values; let index=index">
            <td>oferta.id</td>
            <td>oferta.idPresentada</td>
            <td>oferta.descripcion</td>
            <td>oferta.id</td>
            <td>oferta.fechaPresentacionFulcrum</td>
            <td>oferta.id</td>
          </tr>
        </tbody>
      </table>
    </div>

我什么都没看到

我不明白这种返回的对象


 $id:"1"
 $values:Array(16)

我希望只有一组 Oferta 对象

有什么想法吗?

谢谢

【问题讨论】:

这根本不是 ASP.NET Core,这就是 Angular 表示数据的方式 - Array(16) 告诉你在 javascript 方面 为什么看不到thead的内容?您可以打印 F12 并检查页面中的元素吗? 我的 Web API 仅返回一个数组,Angular 将其转换为具有 2 个属性的对象:$id 和 $values,其中是我想要的数组。所以在我的 *ngFor 指令中,我需要访问第二个属性:let oferta of ofertas.$values 但是虽然在控制台中我看到表中的值没有显示 【参考方案1】:

测试后,您应该使用$.parseJSON(res) 之类的东西来处理响应数据。在角度,也许你可以使用JSON.stringify(string_data);

1.我的测试 api,我们可以看到我这边的响应数据。

2.响应数据是字符串格式,而不是对象。您可以在浏览器中调试器进行检查。

【讨论】:

我需要迭代一个数组而不是一个字符串【参考方案2】:

我以这种方式从我的 web api 获取值的原因必须是避免循环引用

services.AddControllers().AddJsonOptions(x =>
            x.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve);

谢谢

【讨论】:

以上是关于这是从 ASP.NET Core Web API 中的 EF Core 5 获得的啥样的响应 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET Web API ASP.NET Core 2 返回 HTML 并获取 http 状态 406

将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api

如何从 ASP.NET Core Web API 中的 SQL Server 存储过程中获取返回值

如何使用 fetch 将 FormData 从 javascript 发送到 ASP.NET Core 2.1 Web API

为啥从 ASP.NET Core Web API 的 ControllerBase 与 Controller 派生?

从 ASP.NET Core Web API 中的控制器访问用户身份