Как управлять методом GET с параметрами в Swagger?

#laravel #swagger #laravel-api

#laravel #swagger #laravel-api

Вопрос:

Я использую Swagger для создания документации по API Laravel, и иногда помимо POSTMAN также проводится тестирование, проблема в том, что методы GET с параметрами не работают Route::get('/searchProduct/{id}','ApiReportController@getProductsByID');

Но если метод GET не имеет параметров, он работает отлично. В Swagger я понял, что когда я делаю запрос, я не ввожу параметр, {id} но я считаю, что после {id}?id=4

Это мой маршрут

 My route
Route::get('/searchProduct/{id}','ApiReportController@getProductsByID');

Result in Swagger
www.x.cl/api/searchProduct/{id}?id=4 //ERROR

How it should work
www.x.cl/api/searchProduct/4 
  

Потому что в POSTMAN я меняю свой идентификатор только по номеру, и поиск работает для меня.

Это мой контроллер

     /**
     *  @OAGet(
     *      path="/api/searchProduct/{id}",
     *      summary="Search Product by Status",
     *      description="Lorem ipsun",
     *      security={
     *          {"bearer_token":{}},
     *      },
     *      @OAParameter(
     *         name="id",
     *         in="query",
     *         description="Buscar por estado",
     *         required=true,
     *      ),
     *      @OAResponse(
     *          response=200,
     *          description="OK",
     *          @OAMediaType(
     *              mediaType="application/json",
     *          )
     *      ),
     *      @OAResponse(
     *          response="default",
     *          description="Ha ocurrido un error."
     *      ),
     *      @OAResponse(
     *          response="401",
     *          description="No se ha autenticado, ingrese el token."
     *      ),
     *  )
     */
    public function getProductsByID($uuid){
        $validated = Product::status($uuid);
        return ReportResource::collection($validated);
    }
  

Ответ №1:

Попробуйте in="query", заменить in="path", здесь :

      *      @OAParameter(
     *         name="id",
     *         in="query",
     *         description="Buscar por estado",
     *         required=true,
     *      ),
  

Запрос относится к «строке запроса», набору пар ключ / значение, разделенных амперсандом, которые следуют за ? URL.