こんにちは:私はLaravelでapiを書いています。Laravel APIリクエストの検証
コントローラで要求の検証を使用しようとすると、405メソッドが許可されません。要求の検証を削除すると、すべてがスムーズに実行されます。ここで
は私のルートである:ここでは
Route::post('product/create', 'Api\v1\[email protected]');
は私のコントローラである:ここでは
<?php
namespace App\Http\Controllers\Api\v1;
use App\Http\Requests\CreateProduct;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Handlers\Products;
use Illuminate\Support\MessageBag;
class ProductController extends Controller
{
/**
* Create Product.
*/
public function create(CreateProduct $request)
{
echo 'product created...';
}
}
は、私の要求のバリデータです:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreateProduct extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required',
'price' => 'required',
'short_description' => 'required'
];
}
/**
* Set custom validation messages.
*
* @return array
*/
public function messages()
{
return [
'title.required' => 'Please enter a title.',
'price.required' => 'Please enter a price.',
'short_description.required' => 'Please enter a short description.'
];
}
}
Iから "CreateProductの$要求" を削除します"作成"メソッドは、すべてが動作します。
Laravelのリクエスト検証でAPIコールを使用するにはどうすればよいですか?
おかげで、私がしようとしているがコントローラーからすべてのバリデーションを削除する、理由は、私のAPIとウェブは同じバリデーションを使用し、私は厳密にDRY方法論を多く使用しているできるだけ早くそこで、私は、ルールとメッセージメソッドで独自の検証クラスを作成し、リクエストバリデータと同じものを返します。私はちょうどコントローラにそれらを挿入し、Validator :: make()を使用し、すべての検証ルール/メッセージはコントローラからは除外されます。 –