swagger попробуйте перенаправить для входа - PullRequest
0 голосов
/ 10 марта 2020

Я монтирую свою документацию api swagger (используя логин для защиты моего маршрута "api / document"). Пользовательский интерфейс документации это нормально, но когда я хочу выполнить "попробовать это" ... Упс! Что-то идет не так ...

Я обнаружил, что класс "Authenticate" (расширяет Middleware) перенаправляет на логин, если не находит заголовок this.headers['Content-Type'] = 'application/json';. Затем я перешел к представлению (resources / view / vendor / l5-swagger / index.blade. php) и установил правильные заголовки:

    requestInterceptor: function() {
      this.headers['Authorization'] = 'Bearer '+token; 
      this.headers['Content-Type'] = 'application/json';
      this.headers['Accept'] = 'application/json';
      return this;
    }

Проблема в том, что когда я "повторяю его out "результат это перенаправление на вход в систему снова. И я передаю заголовки на локоне:

 curl -X GET "http://127.0.0.1:8000/api/mediador/xxx" -H "accept: */*" -H "Authorization: Bearer tokenGenerated" -H "Content-Type: application/json" -H "Accept: application/json"

Вот пример того, как я документирую свои звонки в комментариях:

/**
 * Insertamos un nuevo mediador
 * @param Request $request
 * @return \Illuminate\Http\JsonResponse Respuesta formateada para la api del create
 *
 * @OA\Post(
 *     path="/api/mediador/",
 *     tags={"Mediador"},
 *     description="Insert data from mediador profile",
 *     @OA\RequestBody(
 *       required=true,
 *       @OA\MediaType(
 *           mediaType="application/json",
 *           @OA\Schema(
 *               type="object",
 *               required={"id_user_crm","email","nombre_usuario"},
 *               @OA\Property(
 *                   property="id_user_crm",
 *                   description="ID from sugar ",
 *                   type="string"
 *               ),
 *               @OA\Property(
 *                   property="email",
 *                   description="Email from profile",
 *                   type="string"
 *               ),
 *               @OA\Property(
 *                   property="nombre_usuario",
 *                   description="Name of user",
 *                   type="string"
 *               )
 *           )
 *       )
 *   ),
 *   @OA\Response(response="200", description="This is ok"),
 *   @OA\Response(response="401", description="Not logged with OAUTH token"),
 *   @OA\Response(response="403", description="Wrong data or duplicated fields in DataBase"),
 * )

Зачем еще перенаправлять на вход? Как я могу установить данные

1 Ответ

0 голосов
/ 17 марта 2020

Я нашел решение по моей проблеме:

Swagger, попробуйте прочитать как html, если вы не дадите Response с правильным "mediaType". Здесь поместите полный комментарий для работы с Swagger ui:

 /** 
 * @OA\Post(
 *     path="/api/mediador/",
 *     tags={"Mediador"},
 *     description="Insert data from mediador profile",
 *     @OA\RequestBody(
 *       required=true,
 *       @OA\MediaType(
 *           mediaType="application/json",
 *           @OA\Schema(
 *               type="object",
 *               required={"id_user_crm","email","nombre_usuario"},
 *               @OA\Property(
 *                   property="id_user_crm",
 *                   description="ID outside of this platform",
 *                   type="string"
 *               ),
 *               @OA\Property(
 *                   property="email",
 *                   description="Email from profile",
 *                   type="string"
 *               ),
 *               @OA\Property(
 *                   property="nombre_usuario",
 *                   description="Name of user",
 *                   type="string"
 *               )
 *           )
 *       )
 *   ),
 *   @OA\Response(
 *     response="200", description="Inserted data from mediador profiles",
 *     content={
 *          @OA\MediaType(
 *              mediaType="application/json",
 *              @OA\Schema(
 *                  @OA\Property(
 *                           property="id",
 *                           type="integer",
 *                           description="The id generated"
 *                   ),
 *                  @OA\Property(
 *                         property="id_user_crm",
 *                         type="integer",
 *                         description="The reference id with the other platform"
 *                   )
 *              )
 *          )
 *     }
 *   ),
 *   @OA\Response(response="401", description="Not logged with OAUTH token"),
 *   @OA\Response(response="403", description="Wrong data or duplicated fields in DataBase"),
 * )
 */

С этим комментарием перед функцией прочитайте @OA\Response и выполните поиск @OA\MediaType, чтобы узнать, какой тип ответа возвращает API REST.

...