Php 我所有的JSON输出(来自LaravelAPI应用程序)都包含在一个数据标记中,我如何删除它?
我正在Laravel中开发一个API,它输出JSON供Android应用程序使用。我在Laravel方面工作,我的朋友在Android方面工作。我们可以将Android应用程序连接到API,但由于某种原因,它无法访问数据。我们认为存在的问题是,Laravel的所有JSON输出都在一个数据标签中,Android应用程序无法访问该标签 所有文章的代码Php 我所有的JSON输出(来自LaravelAPI应用程序)都包含在一个数据标记中,我如何删除它?,php,android,json,laravel,api,Php,Android,Json,Laravel,Api,我正在Laravel中开发一个API,它输出JSON供Android应用程序使用。我在Laravel方面工作,我的朋友在Android方面工作。我们可以将Android应用程序连接到API,但由于某种原因,它无法访问数据。我们认为存在的问题是,Laravel的所有JSON输出都在一个数据标签中,Android应用程序无法访问该标签 所有文章的代码 public function toArray($request) { return [ 'status' => 'ok'
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的例子,更不用说实际修复它了。有人知道我怎么解决这个问题吗?如果您需要更多信息/代码/屏幕截图,请告诉我,谢谢
编辑:
中间件代码:
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 = [
(中间件代码结束)
这适用于单个项目
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
//]
];
}
若它有您提到的分页链接,那个么它只是强制数据存储其他元数据信息。资源就是这样工作的。在中检查这一点,尤其是数据包装和分页
其他选项是不使用资源并创建自己的输出。您如何访问API响应?它应该可以通过
response.data
获得。您似乎有一些中间件可以改变响应。检查启用的中间件。在客户端尝试解析json,因为json是以字符串格式从一个点发送到另一个点的,所以在访问数据标记之前,您可能不会将其转换为json。Tim Lewis,我不完全确定您的意思,我在google chrome或postmanJagad89上检查API输出,我刚刚在编辑中添加了我的中间件代码,目前还有另外两个中间件文件的函数为空。很抱歉,起初没有看到这个。数据标记从不在单个项中,只在数组中。因此,如果我删除分页,它应该会删除所有数据包装的需要?是的,这是交易啊,好的,我现在理解了数据包装,非常感谢。在第一次尝试删除它时,我得到了一个错误,调用了一个未定义的方法“mapInto”。不确定这是什么,但现在查看它,所以我只是将->paginate()替换为->get(),而不是删除,它可以工作。不完全确定我是不是应该这样做,但是嘿,它起作用了哈哈。再次感谢Vladan和所有帮助过你的人