Swagger Получено неверное сообщение json - PullRequest
0 голосов
/ 29 ноября 2018

Я использую Symphony 4 с Doctrine, и теперь я внедряю / добавляю Swagger, поэтому у меня будут соответствующие документы, где будет доступно тестирование моего API.

Это мой почтальон, с правильной формой вводаданные и ОК ответ.enter image description here

И это мои "проблемные" нотации Swagger

 * @Route(
 *     "/request",
 *     name="create",
 *     methods={"POST"}
 * )
 *
 * @SWG\Parameter(
 *     name="domain",
 *     in="formData",
 *     required=true,
 *     type="array",
 *          @SWG\Items(
 *             type="string"
 *          )
 * ),
 *
 * @SWG\Parameter(
 *     name="name",
 *     in="formData",
 *     required=true,
 *     type="string",
 * ),
 *
 * @SWG\Response(
 *     response=200,
 *     description="OK",
 *     @SWG\Schema(
 *          type="array",
 *          @Model(type=App\Entity\Request::class)
 *     )
 * ),
 *
 * @SWG\Response(
 *     response=201,
 *     description="Request created",
 *     @SWG\Schema(
 *          type="array",
 *          @Model(type=App\Entity\Request::class)
 *     )
 * ),

Так что теперь я открываю Swagger через myurl.com/api/doc и пытаюсьвыполнить то же самое ... enter image description here

Таким образом, мой чванец выполняет следующий запрос curl

curl -X POST "http://certify.test/request" -H "accept: application/json" -H "Content-Type: application/json" -d "domain=antrax.com,www.antrax.com&name=antrax.com%2Cwww.antrax.com"

И ответ

{
  "status": "error",
  "code": 0,
  "message": "Invalid json message received"
}

Можете ли вы, ребята, пожалуйста, помогите мне правильно аннотировать мои параметры чванства, чтобы мой документ API мог сделать правильный запрос.Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я предоставлю.Спасибо!

1 Ответ

0 голосов
/ 29 ноября 2018

Я думаю, что Тип контента , отправленный Swagger, неверен.

Используя Почтальон, вы отправляете заголовок типа контента , равный application/x-www-form-urlencoded, но с Swagger он равен application/json.

Попробуйте добавить потребляет введите ваши аннотации Swagger, такие как:

 * @SWG\Post(
 *     path="/request",
 *     consumes={"application/x-www-form-urlencoded"},
 * )

Также вы должны изменить параметр domain на domain[]:

@SWG\Parameter(
*     name="domain[]",
*     in="formData",
*     description="Array of domains for TSL certificate",
*     required=true,
*     type="array",
*          @SWG\Items(
*             type="string"
*          )
* )
...