laravel - 通过 Controller Larael 中的 Trait 触发 JSON 响应
问题描述
我正在使用 Laravel 8 构建一个 API,我有一条路线,出于问题的目的,它是....../api/fact
它获取了一个随机事实。我有一个FactsController.php
文件和两个特征,一个用于构建 JSON 响应,另一个用于获取事实。由于某种原因,当从我的控制器(发出请求)中调用特征函数时,我没有在 Postman 中返回任何返回的 JSON ......
特征/GetFact.php
<?php
namespace App\Traits;
use App\Traits\ApiResponse;
trait GetFact {
use ApiResponse;
/**
* Get random fact
*
* get random fact
*/
public function getRandomFact () {
$this->getFact();
$this->apiResponse([
'msg' => "Fact..."
], 200, true);
}
}
特征/ApiResponse.php
<?php
namespace App\Traits;
trait ApiResponse {
/**
* API Response
*
* Return a JSON response for our API with params
*/
public function apiResponse ($data, $code, $success = false) {
return response()->json(array_merge(['success' => $success], $data), $code);
}
}
控制器/FactController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Traits\GetFact;
class FactsController extends Controller
{
use GetFact;
/**
* Fact
*
* @param Request $request
*/
public function fact()
{
$this->getRandomFact()
}
}
当我向我提出请求时,/api/fact
我应该在我使用 调用的位置列出返回的 JSON $this->apiResponse()
,msg
但我不是?这就像return
似乎没有返回 JSON,因为它的范围是 trait 而不是控制器,并且那里没有返回?我怎样才能实现上市。
解决方案
您不会从 Controller 方法中“返回”任何内容。你必须返回一些东西,让他们成为内容的回应。另外,fact
不要getRandomFact
返回任何东西,所以调用它们对你没有任何作用。您还调用了一个getFact
方法并且没有将返回分配给任何东西(如果它甚至返回任何东西)。
推荐阅读
- python - 无法导入 django:importError
- python - Python Django,Pandas:ForeignKey,他的属性和计算
- ubuntu - 如何将 osd、equ.traineddata 和其他经过训练的数据文件(孟加拉语、印地语)与 pytesseract 一起使用(命令以及 eq.traineddata 的放置位置)
- javascript - Fetch 返回字符串而不是 JSON
- swift - SwiftUI/Combine:订阅@Binding 的值变化
- php - 服务器抛出错误 405:尝试与我的回调 URL 通信时不允许使用方法
- javascript - 如何获取通过objectstore.add()添加到IndexedDB的对象的(自动增量)id?
- ios - 有没有办法让 TextInput 表现得像一个按钮,即能够被选中(onPress)或者用户可以输入按钮的标题?
- c# - 将字符串转换为 RestSharp 定义的调用方法
- java - 无法使用 Kafka Connect 从 SAP HANA 获取记录