Fly to the moon with

@cpoissonnier

Appuyer sur 'n' pour afficher les notes

QUID ?

Concrètement, Ca fait quoi ?

  • Client REST
  • Mock
  • Monitoring
  • Test d'API
  • Documentation d'API
  • ...

Bref, c'est (trop) complet ...

Et C'est pour qui ?

  • Développeur backend
  • Développeur frontend
  • Développeur mobile
  • Recetteur

Bref, un peu tout le monde ...

Du coup, on l'utilise n'importe comment

ON va voir comment

  • Créer facilement ses collections
  • Organiser ses requêtes
  • Partager ses requêtes
  • Gérer les environnements
  • Gérer l'authentification

Ce qu'on ne verra pas

  • Mock
  • Monitoring
  • Documentation
  • ...

Disclaimer

Cette présentation est basée sur la version native de postman

La version Chrome app est dépréciée

Conseil

Créez un compte pour synchroniser automatiquement vos collections !

Vocabulaire &
Organisation des requêtes

Postman fonctionne en arborescence

  • Un workspace = un client/une équipe
  • Une collection = une application
  • Un répertoire par domaine métier
  • Ne pas hésiter à ordonner les répertoires si l'application suit un workflow particulier
  • Favoris pour mettre en avant vos projets en cours

Créer ses premières collections

Import

  • Swagger
  • cURL
  • RAML
  • WASDL

import collection via swagger

Avertissement

Seul le premier tag est pris en compte

import requête via curl

Travailler en équipe

(gratuitement)

EXport collection

import collection

Avantages

  • Lien persistant (partageable sur la base documentaire)
  • Possibilité de mettre à jour (manuellement)

Mettre à jour une collection

NOT impressed ?

Variables

Je veux tester avec/sans l'API management

Je veux réutiliser mes requêtes locales sur l'environnement d'intégration

Je dois vraiment me taper la modification de la clé d'API sur toutes les requêtes ?!

La collection de mon projet  ressemble à ça ...

Variables d'environnement ftw !

Elles permettent de gérer

  • Les environnements
  • Les endpoints
  • Les clés d'API & secret
  • les tokens JWT
  • ...

Notation

{{I_AM_A_VARIABLE}}

Exemple d'un environnement

Exemple de requête utilisant une variable d'environnement

Démo

Scopes

Partage des variables d'environnements

Dans la version gratuite : uniquement par fichier

Authentification

Postman supporte

  • Bearer Token
  • Inherit auth from parent
  • Basic Auth
  • Digest Auth
  • OAuth 1.0
  • OAuth 2.0
  • Hawk Authentication
  • AWS Signature
  • NTLM Authentication

C'est ce qu'on va utiliser

Et puis ça aussi

Inherit auth from parent ?

On peut définir le mode d'authentification au niveau de la collection, du répertoire, ou de la requête.

Exemple :

  • Par défaut, sur la collection, on se connecte en tant qu'utilisateur lambda
  • Sur le répertoire "admin", on se connecte en tant qu'administrateur
  • Sur le répertoire "monitoring", on se connecte en Basic, avec un utilisateur dédié

Si seulement le token pouvait être mis à jour automatiquement ...

Pre-request scripts

Offre la possibilité d'exécuter du code JS avant une requête

pm.sendRequest({
  url:  pm.environment.get("VITODOC_KEYCLOAK_HOST") + "/realms/vitodoc/protocol/openid-connect/token",
  method: 'POST',
  header: {
	"Content-Type": "application/x-www-form-urlencoded",
	"Cache-Control": "no-cache",
  },
  body: {
	  mode: 'urlencoded',
	  urlencoded: [
		{key: "grant_type", value: "password"},
		{key: "client_secret", value: pm.environment.get("VITODOC_KEYCLOAK_APP_SECRET")},
		{key: "client_id", value: "vitodoc-app"},
		{key: "username", value: pm.environment.get("VITODOC_PRACTITIONER_LOGIN")},
		{key: "password", value: pm.environment.get("VITODOC_PRACTITIONER_PWD")}
	]
  }
}, function (err, res) {
	pm.environment.set("token-practitioner", res.json().access_token);
});

// + une autre requête, pour se connecter avec un autre user qui a un rôle différent

scopes dans les scripts

// global scope
pm.global.set("variable_key", "variable_value");
// environment scope
pm.environment.set("variable_key", "variable_value");
// collection scope
pm.variables.set("variable_key", "variable_value");

Pre-request scripts

Pre-request scripts + Variable

Rôle praticien par défaut

Pre-request scripts + Variable

Rôle surchargé dans ce répertoire

1 Requête, 3 APPELS,
0 authentification manuelle

Pre-request scripts

On peut espérer quelques améliorations à l'avenir :

  • Exécuter une requête Postman existante
  • Générer le code JS d'une requête Postman utilisant les librairies Postman

Debug

Génération de code

Export en cURL pour pallier aux manques/bugs de Postman (mauvaise gestion du Server Sent Event, header fantôme, ...)

Nombreux autres langages/frameworks supportés (Java, PHP, NodeJS, ...)

Postman déconne ?

Console :CTRL + ALT + C

Runner

Le front est à la bourre, je dois toujours appeler les mêmes requêtes pour construire un jeu de test à jour

Pre-request scripts +

post-request scripts + Runner = <3

TEST = post-request script

Offre la possibilité d'exécuter du code JS après une requête

Utilisé à la base pour tester les API, mais on peut extraire des valeurs et les mettre dans des variables d'environnements

Chainer les requêtes

On peut gérer des workflows, en chaînant les requêtes avec les pre/post-request script

Démo

Exécution itérative

Ne remplace pas des tests de performance, mais permet de peupler des données de tests plus facilement

autres fonctionnalités

Proxy Intercepteur

Client soap

Questions ?