Laravel API 请求验证响应 application/x-www-form-urlencoded 数据

问题描述 投票:0回答:1

我有一个使用 php 8.2 的 laravel 9x 应用程序。 该应用程序有一个 API 可以从表单组装表单接收数据。此表单以 application/x-www-form-urlencoded 的形式发送数据。如果出现错误,例如验证错误,它不会发回响应。相反,它会将其视为 Web 数据,并尝试重定向到主页。我知道如果它作为 application/json 数据发送,它会工作得很好。但是,表单装配不提供此选项。当没有错误响应时,调试起来非常困难。 Laravel Daily 在解释这一点方面做得很好here,但当涉及到 application/x-www-form-urlencoded 数据时,我似乎找不到太多答案。 有什么办法可以解决这个问题或有其他建议吗?

class ApplicationsController extends Controller
{
    use HasApplicationEmail, EmailsTrait;

    public function store(CreateApplicationRequest $request)
    {
       ...
    }
class CreateApplicationRequest extends FormRequest
{
    public function rules()
    {
        return [
            'email'                     => ['required', 'email'],
            'event_slug'                => ['required'],
            'application_fee'           => ['required', 'numeric'],
            'applicant_birthdate'       => ['required'],
            'applicant_gender'          => ['required'],
            'marital_status'            => ['required'],
            'applicant_street_1'        => ['required'],
            'applicant_city'            => ['required'],
            'applicant_state_province'  => ['required'],
            'applicant_zip'             => ['required'],
            'applicant_country'         => ['required'],
            'applicant_phone'           => ['required'],
            'transaction_number'        => ['required'],
        ];
    }

    public function authorize()
    {
        return true;
    }
}
php laravel validation x-www-form-urlencoded
1个回答
0
投票

我最终通过 aynber 的建议找到了解决方案这里

在createApplicationRequest中,我添加了

    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(response($validator->errors(), Response::HTTP_UNPROCESSABLE_ENTITY));
    }

这返回了带有错误的响应并且工作完美。

© www.soinside.com 2019 - 2024. All rights reserved.