这是我的控制器,我在这里大摇大摆地切换
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, ]); }
}
根据邮递员错误,它似乎无法从请求中获取字段(名称、类型...)。 dd 请求对象,看看会发生什么。