首页 > 解决方案 > 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']);

标签: phplaravelapirest

解决方案


我建议你以 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;
}

推荐阅读