Я использую L5-Swagger 5.7. * Пакет (обертка Swagger-php ) и пытался описать REST API Laravel. Итак, мой код такой:
/**
* @OA\Post(path="/subscribers",
* @OA\RequestBody(
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* type="object",
* @OA\Property(property="email", type="string")
* )
* )
* ),
* @OA\Response(response=201,description="Successful created"),
* @OA\Response(response=422, description="Error: Unprocessable Entity")
* )
*/
public function publicStore(SaveSubscriber $request)
{
$subscriber = Subscriber::create($request->all());
return new SubscriberResource($subscriber);
}
Но когда я пытаюсь отправить запрос через панель swagger, я получаю код:
curl -X POST "https://examile.com/api/subscribers" -H "accept: */*" -H "Content-Type: application/json" -H "X-CSRF-TOKEN: " -d "{\"email\":\"bademail\"}"
Как видите, accept - это не application / json, и Laravel не идентифицирует это как AJAX-запрос. Поэтому, когда я отправляю неверные данные и ожидаю получить 422 с ошибками в реальном времени, я получаю 200 кодов с ошибками в «сеансе». Запрос (XHR) через панель swagger также обрабатывается некорректно, код CURL просто для наглядности.
Также я обнаружил, что в предыдущей версии использовалось что-то вроде:
* @SWG\Post(
* ...
* consumes={"multipart/form-data"},
* produces={"text/plain, application/json"},
* ...)
Но теперь это уже устарело.
Итак, как получить код 422 без перенаправления, если проверка не пройдена? Или, может быть, добавить заголовок «XMLHttpRequest»? Что здесь лучше всего делать?