我的所有JSON输出(来自Laravel API应用程序)都包含在数据标签中,如何删除此标签?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的所有JSON输出(来自Laravel API应用程序)都包含在数据标签中,如何删除此标签?相关的知识,希望对你有一定的参考价值。

我正在使用Laravel中的API,该API输出JSON供android应用程序使用。我在Laravel方面工作,而我的朋友在Android方面工作。我们可以将Android应用程序连接到API,但是由于某种原因它无法访问数据。我们认为的问题是,Laravel的所有JSON输出都在一个数据标签中,Android应用程序无法访问。

JSON output from Laravel API

所有文章的代码

public function toArray($request)
{
    return [
      'status' => 'ok',
      'totalResults' => count($this),
        'articles' => ArticleResource::collection($this->collection),
    ];
}

一篇文章的代码

public function toArray($request)
{
    return [
        'source' => [
          'id' => $this->id,
          'name' => $this->name
        ],
          'author' => null,
          'title' => $this->title,
          'description' => $this->description,
          'url' => $this->url,
          'urlToImage' => null,
          'publishedAt' => $this->created_at,
          'content' => null
      //]
    ];
}

我一直在寻找如何以及为什么将它们全部放入数据标签中,或者甚至那就是为什么我们遇到问题的原因,但是我什至找不到Laravel在数据标签中输出JSON的其他示例,没关系实际修复它。有谁知道我该如何解决?让我知道是否有更多您想要的信息/代码/屏幕截图,谢谢。

编辑:Also, as well as all the articles, nested in the data tag is the pagination

中间件代码:

Authenticate.php

protected function redirectTo($request)
{
    if (! $request->expectsJson()) {
        return route('login');
    }
}

RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }

    return $next($request);
}

TrimStrings.php

protected $except = [
    'password',
    'password_confirmation',
];

TrustProxies.php

protected $proxies;
protected $headers = Request::HEADER_X_FORWARDED_ALL;

VerifyCsrfToken.php

protected $addHttpCookie = true;
protected $except = [

(中间件代码的结尾)

Not sure if this will be helpful, every occurrence of the word 'data' in my project

答案

这应该对单个项目执行。

public function toArray($request)
{
    static::$wrap = null;

    return [
        'source' => [
          'id' => $this->id,
          'name' => $this->name
        ],
          'author' => null,
          'title' => $this->title,
          'description' => $this->description,
          'url' => $this->url,
          'urlToImage' => null,
          'publishedAt' => $this->created_at,
          'content' => null
      //]
    ];
}

如果您提到了它的分页链接,它只是强制存储所需的数据以存储其他元数据信息。这就是资源的工作方式。在documentation中进行检查,尤其是数据包装和分页。

您的其他选择是不使用资源来创建自己的输出。

以上是关于我的所有JSON输出(来自Laravel API应用程序)都包含在数据标签中,如何删除此标签?的主要内容,如果未能解决你的问题,请参考以下文章

用于 API 响应的 Laravel 自定义包装器

Laravel 8 API:获取 id 返回空 json

在 Laravel 或 iOS 应用程序中转换 JSON API 数据

Laravel 4 JSON 输出格式

使用 Javascript 解析 JSON。来自 Laravel 的 JSON

来自 Vue.js 的 Laravel API 调用导致 GET 路由的 CORS