Estoy construyendo mi primera API de laravel y cuando trato de validar algunos datos de formulario simulados usando Postman con el método POST, la aplicación me devuelve el HTML de la página de índice y el estado 200.
Aquí está mi código
public function store(Request $request) { $request->validate([ 'name' => 'required', 'slug' => 'required', 'price' => 'required' ]); return Product::create($request->all()); } La aplicación devuelve el objeto que se insertó en la base de datos si la validación fue exitosa (si se completaron los datos), pero de lo contrario devuelve un archivo HTML.
¿Cómo puedo cambiar la forma en que opera el método 'validar ()'? Supongo que solo está devolviendo al usuario a la página principal si los datos del formulario no se completaron correctamente
Estoy usando Laravel 8
Debe agregar Accept: application/json header a su solicitud de Postman, sin esto, Laravel funciona como HTML.
Pero, en mi opinión, todas las solicitudes en una API deben forzarse a una respuesta json. Para esto, cree app/Http/Middleware/ForceJsonResponse.php
namespace App\Http\Middleware; use Closure; class ForceJsonResponse { public function handle($request, Closure $next) { if (!$request->headers->has('Accept')) { $request->headers->set('Accept', 'application/json'); } return $next($request); } } Y agréguelo a app/Http/Kernel.php
protected $routeMiddleware = [ //other midlewares 'json' => \App\Http\Middleware\ForceJsonResponse::class, //other midlewares ]; protected $middlewareGroups = [ 'api' => [ //other midlewares 'json' //other midlewares ] ];