php - Rest API - GET 请求返回 404 错误,并作为响应 0 与现有 account_id
问题描述
我正在实现一个 Rest API。事实证明,当使用 Postman 时,我将 GET 请求发送到作为参数接收的路由 account_id = 100
http://127.0.0.1:8000/api/balance?account_id=100
ID 100
存在,但邮递员不断返回 404 错误并返回“0”。我正在使用 Laravel 8,我认为我的问题出在Handler
. 我向您展示了BalanceController
控制器和Handler
类。
平衡控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Account;
class BalanceController extends Controller
{
public function show(Request $request)
{
$accountId = $request->input('account_Id');
$account = Account::findOrFail($accountId);
return $account->balance;
}
}
Handler.php 类注册方法
public function register()
{
$this->renderable(function (NotFoundHttpException $e, $request) {
return response()->json('0',404);
});
}
这个想法是,当我发出这个请求时,我将返回所述 ID 的余额和响应 200,我重复 ID = 100 存在,因为我在另一个时间使用另一个控制器中的逻辑通过 POST 请求创建它。
api 路由.php
<?php
use Illuminate\Support\Facades\Route;
Route::post('/reset', [App\Http\Controllers\ResetController::class, 'reset']);
Route::get('/balance', [App\Http\Controllers\BalanceController::class,'show']);
Route::post('/event', [App\Http\Controllers\EventController::class, 'store']);
解决方案
我建议你以 Laravel 的方式实现这一点。在您的 api.php 中,更改您的路线,使其接受如下参数。
请注意,{account_id}
当程序访问此 API 路由时,它会替换为实际的 ID 号。
Route::get('/balance/{account_id}', [App\Http\Controllers\BalanceController::class,'show']);
然后,在您的 show() 函数中,添加第二个参数,如下所示:
public function show(Request $request, $account_id)
{
$account = Account::findOrFail($account_id);
return $account->balance;
}
推荐阅读
- systemd - 如何为所有用户启用、禁用和重新加载 systemd 单元和服务?
- google-cloud-platform - 协调工作流程的更便宜的替代方案
- postgresql - 如何在 Dockerized GraphQL + Postgres 设置中运行 Prisma 迁移?
- java - Textview 和 String 之间的验证日期
- c# - 在单元测试期间调用 INotifyPropertyChanged PropertyChanged 事件为空
- html - 如何对齐 HTML 项目符号点列表中的第二行
- node.js - PayloadTooLargeError:nodejs中的请求实体太大
- react-native - 如何在 monorepo 中使用 react-redux 连接
- javascript - 当我将鼠标悬停在具有“时尚”类的 div 上时,如何选择具有“部门-o”类的元素
- r - 在 R 中绘制与 lme4 或 LmerTest 模型的置信区间的交互