laravel
JASON
Valitation

Laravel validation + Json

More than 1 year has passed since last update.

csrf_tokenを閉じる

外部からPOSTされる時、
csrf_tokenのチェックを無効にする必要がある。

app/Http/Middleware/VerifyCsrfToken.php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * CSRFバリデーションから除外するURI
     *
     * @var array
     */
    protected $except = [
        'stripe/*',
         //URI追加
    ];
}

テストコードの時

app/Http/Kernel.php
//コメントする
'App\Http\Middleware\VerifyCsrfToken',

Csrfを使うコントローラでのみONにする、
コントローラのコンストラクタに入れたら、コントローラのCSRFがONになる。

app/Http/Controller/xxxxController.php
$this->middleware('App\Http\Middleware\VerifyCsrfToken'); 

そしてValdationを書く、返す値を\Response::json()で処理

public function create(Request $request)
{
    //全てのrequestデータを取る

    $rules = [
        'e-maill'=>'required',
        ...
    ];

    $messages = [
        'email.required'=>'email is must.',
        ...
    ];


    $validation = Validator::make($request,$rules,$messages);

    $response = array();

    if($validation->fails()){

        $response['status'] = "NG";
        $response['message'] = "validation error.";

        return \Response::json($response);


    }else{

        //
        //DB書き込みなどの処理

        $response['status'] = "OK";
        $response['message'] = "no problem.";

        return \Response::json($response);
    }
}