# Configuration du bouton « Tester »

Vous pouvez configurer le bouton « Test It » et la fenêtre associée dans GitBook à l’aide de plusieurs extensions OpenAPI. Ces extensions peuvent aider à améliorer et à configurer la suite de test pour les utilisateurs.

### Masquer le bouton « Test it »

Vous pouvez masquer le bouton « Test it » de vos points de terminaison en ajoutant `x-hideTryItPanel` à un point de terminaison, ou à la racine de votre spécification OpenAPI.

{% code title="openapi.yaml" %}

```yaml
openapi: '3.0'
info: ...
tags: [...]
paths:
  /example:
    get:
      summary: Exemple de résumé
      description: Exemple de description
      operationId: examplePath
      responses: [...]
      parameters: [...]
      x-hideTryItPanel: true
```

{% endcode %}

### Acheminer les requêtes « Test it » via un proxy

Certaines API bloquent les requêtes du navigateur, souvent à cause de CORS.

Acheminer **Test it** le trafic via GitBook en ajoutant `x-enable-proxy` à votre spécification.

Voir [Utiliser le proxy OpenAPI](https://app.gitbook.com/s/NkEGS7hzeqa35sMXQZ4X/api-references/guides/using-openapi-proxy) pour des exemples.

### Activer l’authentification dans la fenêtre de test

Le moteur de requêtes ne peut présenter et appliquer l’authentification que si votre spécification la déclare. Définissez les schémas sous `components.securitySchemes`puis associez-les soit globalement via `security` (s’applique à toutes les opérations), soit par opération (remplace la valeur globale).

#### Déclarez votre schéma d’authentification

Voici des modèles courants. Utilisez des guillemets droits dans YAML.

{% tabs %}
{% tab title="HTTP Bearer (p. ex., JWT)" %}

```yaml
openapi: '3.0.3'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
```

{% endtab %}

{% tab title="Clé API dans l’en-tête" %}

```yaml
openapi: '3.0.3'
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
```

{% endtab %}

{% tab title="OAuth2 (authorizationCode)" %}

```yaml
openapi: '3.0.3'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: 'https://auth.example.com/oauth/authorize'
          tokenUrl: 'https://auth.example.com/oauth/token'
          scopes:
            read:items: 'Lire les éléments'
            write:items: 'Écrire des éléments'
```

{% endtab %}
{% endtabs %}

#### Appliquer les schémas globalement ou par opération

{% tabs %}
{% tab title="Global" %}

```yaml
openapi: '3.0.3'
security:
  - bearerAuth: []
paths: ...
```

{% endtab %}

{% tab title="Par opération" %}

```yaml
paths:
  /reports:
    get:
      summary: Obtenir des rapports
      security:
        - apiKeyAuth: []
      responses:
        '200':
          description: OK
```

{% endtab %}
{% endtabs %}

### Contrôler l’URL du point de terminaison avec `tableau servers`

Le moteur de requêtes cible l(es) URL(s) que vous définissez dans le `tableau servers` tableau. Déclarez un ou plusieurs serveurs ; vous pouvez également les paramétrer avec des variables.

{% tabs %}
{% tab title="Serveur unique" %}

```yaml
openapi: '3.0.3'
servers:
  - url: https://instance.api.region.example.cloud
```

{% endtab %}

{% tab title="Plusieurs serveurs" %}

```yaml
servers:
  - url: https://api.example.com
    description: Production
  - url: https://staging-api.example.com
    description: Préproduction
```

{% endtab %}

{% tab title="Variables du serveur" %}

```yaml
servers:
  - url: https://{instance}.api.{region}.example.cloud
    variables:
      instance:
        default: acme
        description: Le slug de votre locataire ou de votre instance
      region:
        default: eu
        enum:
          - eu
          - us
          - ap
        description: Déploiement régional
```

{% endtab %}

{% tab title="Serveurs par opération" %}

<pre class="language-yaml"><code class="lang-yaml"><strong>paths:
</strong>  /reports:
    get:
      summary: Obtenir des rapports
      servers:
        - url: https://reports.api.example.com
      responses:
        '200':
          description: OK
</code></pre>

{% endtab %}
{% endtabs %}
