#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.