Requêtes

HTTP & GraphQL

REST classique, params, headers, bodies JSON/raw/form, GraphQL en POST et tests contractuels.

# HTTP

Le mode HTTP couvre REST et tout endpoint requête/réponse. Zapi utilise le moteur Rust reqwest : pas de CORS, pas de proxy navigateur, des timings mesurés côté natif.

requests/get-user.yml
name: Lire un utilisateur
kind: http
method: GET
url: "{{baseUrl}}/users/{{userId}}"
pathParams:
  - key: userId
    value: "42"
    enabled: true
    description: Identifiant numérique de l’utilisateur
query:
  - key: include
    value: teams,roles
    enabled: true
headers:
  - key: Authorization
    value: "Bearer {{token}}"
    enabled: true

query, pathParams et headers partagent le triplet key / value / enabled, avec une description optionnelle reprise par l’export OpenAPI.

# Bodies JSON, raw et form

JSON
body:
  type: json
  content: |
    { "name": "Ada", "role": "{{role}}" }
Form URL-encoded
body:
  type: form
  form:
    - key: grant_type
      value: password
      enabled: true
    - key: password
      value: "{{secret:API_PASSWORD}}"
      enabled: true

# GraphQL

requests/country.yml
name: Pays par code
kind: graphql
method: POST
url: "{{baseUrl}}/graphql"
body:
  type: raw
  content: |
    query Country($code: ID!) {
      country(code: $code) { name capital currency }
    }
graphqlVariables: |
  { "code": "{{countryCode}}" }
scripts:
  tests: |
    test("pays trouvé", () => expect(res.json.data.country.name).toBeDefined())

Zapi envoie GraphQL en POST avec un objet { query, variables }. Les variables Zapi sont résolues dans la query, les headers et le JSON de variables.