C'est ma manette et je me pavane ici pour changer
class ProductController extends Controller public function __construct() { $this->middleware('auth:api'); } public function getdata() { $products = Product::get(); return view('table', [ 'products'=>$products ]); }
Ici, je récupère toutes les données de la base de données
/** * @return array<object string/int> * * * @OA\Get( * path="/api/products", * tags={"Products"}, * summary="Get all products", * description="For getting all datas should be pressed the button called 'try'", * operationId="index", * @OA\Parameter( * name="paginate", * in="query", * description="Status values that needed to be considered for filter", * required=true, * explode=true, * @OA\Schema( * default="10", * type="string", * ) * ), * @OA\Response( * response=200, * description="successful operation", * ), * security={{ "bearer": {} }} * ) */ public function index($paginate=10){ return UserResource::collection(Product::paginate($paginate)); }
Ici, je stocke les données de swagger
/** * @OA\Post( * path="/api/products", * tags={"Products"}, * summary="Create a new type of item to the product", * operationId="store", * @OA\RequestBody( * description="Create a new item", * required=true, * @OA\MediaType( * mediaType="multipart/form-data", * @OA\Schema( * type="object", * @OA\Property( * property="name", * description="Give a new name to the product", * type="string", * ), * @OA\Property( * property="type", * description="Give a new type to the product", * type="string", * ), * @OA\Property( * property="price", * description="Give a new type to the product", * type="string", * ), * @OA\Property( * property="image", * description="Give a new type to the product", * type="file", * ), * ), * ), * ), * @OA\Response( * response=200, * description="successful operation", * ), * security={{ "bearer": {} }} * ) */ public function store(ProductRequest $request) { $request->validated(); if ($request->hasFile('image')) { $path = $request->file('image')->store('images', 'public'); $product = new Product; $product->image = $path; $product->name = $request->name; $product->type = $request->type; $product->price = $request->price; $product->save(); } return response()->json([ 'status' => 'success', 'message' => 'Product created successfully', 'products' => $product, ]); }
Ici, je reçois juste l'identifiant de l'élément sélectionné pour l'affichage
/** * @OA\Get( * path="/api/product/{id}", * tags={"Products"}, * summary="Show the choosen element", * operationId="show", * @OA\Parameter( * name="id", * in="path", * description="Status values that needed to be considered for filter", * required=true, * explode=true, * @OA\Schema( * default="1", * type="string", * ) * ), * @OA\Response( * response=200, * description="successful operation", * ), * security={{ "bearer": {} }} * ) * */ public function show($id) { return UserResource::collection(Product::all()->keyBy->id); }
Lorsque j'essaie de modifier les données existantes dans la base de données, j'obtiens toujours l'erreur ci-dessous.
/** * @OA\Put( * path="/api/product/{id}/update", * tags={"Products"}, * summary="Update the choosen element", * operationId="update", * @OA\Parameter( * name="id", * in="path", * description="Status values that needed to be considered for filter", * required=true, * @OA\Schema( * type="string", * ) * ), * @OA\RequestBody( * description="Update a new item", * required=true, * @OA\MediaType( * mediaType="multipart/form-data", * @OA\Schema( * type="object", * @OA\Property( * property="name", * description="Update", * type="string", * ), * @OA\Property( * property="type", * description="Update", * type="string", * ), * @OA\Property( * property="price", * description="Update", * type="string", * ), * @OA\Property( * property="image", * description="Update", * type="file", * ), * ), * ), * ), * @OA\Response( * response=200, * description="successful operation", * ), * @OA\Response( * response=400, * description="Invalid user supplied" * ), * @OA\Response( * response=404, * description="User not found" * ), * security={{ "bearer": {} }} * ) * */ public function update(ProductRequest $request, $id){ /* Gate::authorize('update', $product); */ $product = Product::find($id); if ($request->hasFile('image')) { if (isset($product->image)) { Storage::delete($product->image); } $path = $request->file('image')->store('images', 'public'); } $product->update([ "name" => $request->name, "type" => $request->type, "price" => $request->price, "image" => $path ?? $product->image ]); return response()->json([ 'status' => 'success', 'message' => 'The choosen product updated successfully', 'product' => $product, ]); }
Cette erreur s'est produite dans Swagger
Échec de l'obtention. raison possible: Partage de ressources entre domaines panne de réseau Le schéma d'URL doit être "http" ou "https" pour les demandes de partage de ressources entre domaines.
Ce bug dans Postman
"message": "The given data was invalid.", "errors": { "name": [ "The name field is required." ], "type": [ "The type field is required." ], "price": [ "The price field is required." ], "image": [ "The image field is required." ] }
Ici, je supprime des éléments de la base de données
/** * @OA\Delete( * path="/api/product/{id}", * tags={"Products"}, * summary="Show the choosen element", * operationId="destroy", * @OA\Parameter( * name="id", * in="path", * description="Status values that needed to be considered for filter", * required=true, * explode=true, * @OA\Schema( * default="1", * type="string", * ) * ), * @OA\Response( * response=200, * description="successful operation", * ), * security={{ "bearer": {} }} * ) * */ public function destroy($id) { $product = Product::find($id); $product->delete(); return response()->json([ 'status' => 'success', 'message' => 'product deleted successfully', 'product' => $product, ]); }
}
D'après l'erreur du facteur, il semble qu'il ne puisse pas récupérer les champs (nom, type...) de la requête. dd demande l'objet et vois ce qui se passe.