使用json和Guzzle的Laravel5API
我对Laravel5还很陌生,但我正在处理涉及2台服务器(S1和S2)的项目。每个都运行一个Laravel5RESTWebService(API)WS1和WS2 工作流程如下所示:使用json和Guzzle的Laravel5API,laravel,rest,api,laravel-5,guzzle,Laravel,Rest,Api,Laravel 5,Guzzle,我对Laravel5还很陌生,但我正在处理涉及2台服务器(S1和S2)的项目。每个都运行一个Laravel5RESTWebService(API)WS1和WS2 工作流程如下所示: WS1:只需获得一个查询,比如1是对象的id。它只是将查询“重新路由”到WS2 WS2:使用来自Laravel/Passport的个人访问令牌获取相同类型的查询 WS2:让本地mysql数据库知道id为1的对象是否“有效” WS2:使用json创建对WS1查询的响应。比如: {“id”:“2”,“valid”:tru
Route::get('/object/{obj_id?}', 'ObjectController@check')->where('obj_id', '[0-9]+');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ObjectController extends Controller
{
public function check($obj_id)
{
$token = 'my personnal access tokens from WS2 Laravel/Passport'
$client = new Client();
$body = $client->request('GET','http://S2.ip/api/object/' . $object_id, [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => 'bearer ' . $token,
])->getBody();
$contents = (string) $body;
$data = json_decode($contents);
dd($data); // to see what's inside $data
app\Http\Controllers\ObjectController.php
Route::get('/object/{obj_id?}', 'ObjectController@check')->where('obj_id', '[0-9]+');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ObjectController extends Controller
{
public function check($obj_id)
{
$token = 'my personnal access tokens from WS2 Laravel/Passport'
$client = new Client();
$body = $client->request('GET','http://S2.ip/api/object/' . $object_id, [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => 'bearer ' . $token,
])->getBody();
$contents = (string) $body;
$data = json_decode($contents);
dd($data); // to see what's inside $data
S2究竟返回什么。您可以在这里发布一个来自S2的返回示例吗?在S2中,尝试仅使用类似
return response()->json($data,200)的内容返回正文代码>。所以它只给你内容。然后尝试从变量中的S1捕获它,并像return$received\u data那样传输它
I将S2改为返回response()->json($data,200)
但是我仍然没有在S1中捕获任何内容,$data
变量仍然为空。我希望您已经找到了解决方案,否则,您可以做的只是注释掉$contents=(string)$body
并更改下一行,如下所示$data=json\u decode($body)代码>