When I try to update my post in swagger way I get the following error
P粉550823577
P粉550823577 2024-02-25 17:59:20
0
1
301

This is my controller and I'm strutting my switch here

class ProductController extends Controller

public function __construct()
{
    $this->middleware('auth:api');
}


public function getdata()
{
    $products = Product::get();
    return view('table', [
        'products'=>$products
    ]);
}

Here I get all the data from the database

/**
 * @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));
}

Here I store data from 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,

    ]);

}

Here I just get the id of the selected element for display

/**
 * @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);
}

When I try to change existing data in the database, I always get an error like the following.

/**
 * @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,
    ]);
}

This error occurred in Swagger

Failed to obtain. possible reason: Cross-domain resource sharing network failure URL scheme must be "http" or "https" for cross-domain resource sharing request.

This error in 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."
    ]
}

Here I delete elements from the database

/**
 * @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,
    ]);
}

}

P粉550823577
P粉550823577

reply all(1)
P粉248602298

According to the postman error, it seems it cannot get the fields (name, type...) from the request. dd request the object and see what happens.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!