【问题标题】:How to get json response from internal api request in laravel?如何从 laravel 的内部 api 请求中获取 json 响应?
【发布时间】:2017-09-16 19:53:57
【问题描述】:

我的路由文件(routes/api.php):

Route::group(['middleware'=>'cors', 'prefix'=>'v1/'], function(){
    Route::resource('users', 'UserController');
    Route::resource('products', 'ProductController');
    Route::resource('categories', 'CategoryController');

    Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
    Route::post('authenticate', 'AuthenticateController@authenticate');
    Route::get('authenticate/user', 'AuthenticateController@getAuthenticatedUser');
});

我的 ProductController 文件():

public function index(){
    $request = Request::create('api/v1/products/', 'GET');
    $instance = json_decode(Route::dispatch($request)->getContent());
    echo "<pre>"; print_r($instance); exit;

    return view('pages.users.my_sell', ['products'=>$products]); 
}

当我尝试打印 $instance 变量时,我收到以下错误:

我需要从 api 获取所有对象,并且需要将对象传递给我的刀片。

【问题讨论】:

    标签: php json laravel laravel-5.4


    【解决方案1】:

    在你的控制器中,你是否包含了这个?

    use \Illuminate\Support\Facades\Route;
    

    【讨论】:

      【解决方案2】:

      你做错了。如果不想重复 Eloquent 代码,只需在模型中创建一个getAllPproducts() 方法并在控制器方法中使用即可:

      public function index()
      {
          return view('pages.users.my_sell', [ 
              'products' => $this->product->getAllProducts()
          ]); 
      }
      

      只是getAllProducts()的一个例子:

      public function getAllProducts()
      {
          return $this->paginate(20);
      }
      

      【讨论】:

      • 我只需要从 api 获取所有产品,因为我也会在我的移动应用程序中使用该 api。因此,如果我从 api 获取字段,那么很容易在应用程序中获取它。
      • @Mukil API 是应用程序的一部分,您仍然需要从模型中获取数据,而不是尝试创建对 API 的不同请求调用。
      • 我需要加入两个表,并在我的产品 API 控制器中根据需要转换返回的 json 对象。我再次需要在此产品控制器中加入这些表以获取我需要的对象。所以我需要重复两次。
      • @Mukil 将所有与数据库相关的逻辑移动到模型中,并在您需要的所有控制器方法中使用它。您可能想了解 MVC 模式以了解它的工作原理。
      • 当然。但是有没有办法发出内部 api 请求?
      猜你喜欢
      • 2019-04-25
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多