如何使Laravel POST请求?(How to make a POST request in L

2019-10-29 10:57发布

我创建了一个API。 Get请求的作品。 我尝试执行POST请求。

HomeController

<?php
class HomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function store(Request $request)
    {
        $name = Auth::user()->name;
        $ip = Request::ip();

        $user = User::create([
            'name' => $request->input('name'),
            'ip' => $request->input('ip')
        ]);
        return $user;
    }

    public function index()
    {
        return view('home');
    }
}

我的路线

Route::get('/home', 'HomeController@index')->name('home');
Route::post('/api/person', 'HomeController@store');

我试图通过邮递员发布。

得到“消息”:

“CSRF令牌不匹配。”, “异常”: “Symfony的\分量\ HttpKernel \异常\ HttpException” ...

哪里是哪里来的错误?

Answer 1:

排除来自CSRF保护路由app/Http/Middleware/VerifyCsrfToken.php

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    protected $addHttpCookie = true;

    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '/api/person'
    ];
}

这是理想的测试使用邮递员,但在Javascript执行API调用时你应该张贴有效的X-CSRF-TOKEN

而在你的控制器,你有几个问题

<?php

class HomeController extends Controller
{
    public function __construct()
    {
        // REMOVE THIS
        // $this->middleware('auth');
    }

    public function store(Request $request)
    {
        // UNUSED VARIABLES, REMOVE THEM
        // $name = Auth::user()->name;
        // $ip = Request::ip();

        $user = User::create([
            'name' => $request->input('name'),
            'ip' => $request->input('ip')
        ]);
        return $user;
    }

    public function index()
    {
        return view('home');
    }
}


文章来源: How to make a POST request in Laravel?