【问题标题】:I can't work out why this Laravel API keeps returning a 404我不明白为什么这个 Laravel API 不断返回 404
【发布时间】:2021-08-09 05:32:13
【问题描述】:

我有这个控制器:

    <?php

namespace App\Http\Controllers\API;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Assetgroup;
use App\Models\Asset;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;


class AssetgroupController extends Controller
{
    
    
    public function __construct()
    {
        $this->middleware(['jsonvalidation:CreateAssetGroupResource'])->only('store');
        $this->middleware(['jsonvalidation:CreateAssetGroupResource'])->only('update');
    }
   
    public function update(Request $request, Assetgroup $assetgroup, Asset $asset = null)
    {
        **********


    }

api.php中的这条路由

Route::apiResource('/assetgroups', 'API\AssetgroupController');

它是从他的 axios 请求中调用的

Axios.put(`${API_URL}assetgroups/${division.id}`, {
            added
        }).then(r => {
            // DETECT ERROR

            toast('Users assigned!', {
                type: toast.TYPE.SUCCESS,
                autoClose: 2500
            });

            this.setState({
                added: [],
                selectedUsers: r.data.selected_users,
                saving: false,
                users: r.data.users
            });
        });

我是 laravel 的新手,我无法弄清楚为什么这不起作用。浏览器返回一个

Request URL: http://127.0.0.1:8000/api/assetgroups/22
Request Method: PUT
Status Code: 400 Bad Request
Remote Address: 127.0.0.1:8000
Referrer Policy: strict-origin-when-cross-origin

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 需要检查的几件事;你的api前缀下的api组是不是,ID为22的资产组被软删除了?
  • 是的,API 组在 'api/' 下,并且资产组在表中没有软删除列。我可以使用“index()”方法中来自同一控制器/路由的“Get”请求来访问它。
  • 你正在使用 axios。它是否配置为将 laravel 的 csrf 令牌放在其请求的标头中?我认为默认情况下这是在 resources/js/app.js 或 bootstrap,js 中。另外,您是否在更新方法中进行了一些验证?你能把那个方法的代码和jsonvalidation中间件贴出来吗?
  • 它不会让我发布代码,因为它太长了。我把控制器卡在这里:sandbox.onlinephpfunctions.com/code/…
  • 我不确定 csrf 令牌,我在这里有点超出我的深度。

标签: reactjs laravel laravel-5 eloquent axios


【解决方案1】:

改变这个:

Axios.put(`${API_URL}assetgroups/${division.id}`, {

对此并尝试:

Axios.put(`${API_URL}/assetgroups/${division.id}`, {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2015-09-12
    • 2021-11-18
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    相关资源
    最近更新 更多