搜尋

首頁  >  問答  >  主體

當我嘗試以 swagger 方式更新我的帖子時,出現以下錯誤

這是我的控制器,我在這裡大搖大擺地切換

class ProductController extends Controller

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


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

這裡我從資料庫取得所有資料

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

這裡我儲存來自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,

    ]);

}

這裡我只是取得 id 選擇的元素以便顯示

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

當我嘗試更改資料庫中的現有資料時,我總是收到以下錯誤。

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

招搖中出現此錯誤

取得失敗。 可能的原因: 跨域資源共享 網路故障 URL scheme must be "http" or "https" for 跨域資源共用 request.

#郵差中的此錯誤

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

這裡我從資料庫中刪除元素

/**
 * @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粉550823577P粉550823577278 天前370

全部回覆(1)我來回復

  • P粉248602298

    P粉2486022982024-02-26 15:37:13

    根據郵遞員錯誤,它似乎無法從請求中取得欄位(名稱、類型...)。 dd 請求對象,看看會發生什麼事。

    回覆
    0
  • 取消回覆