6.12. Guide de référence pour le développement des fonctions


OpenShift Serverless Functions fournit des modèles qui peuvent être utilisés pour créer des fonctions de base. Un modèle initie le boilerplate du projet de fonction et le prépare à être utilisé avec l'outil kn func. Chaque modèle de fonction est adapté à un runtime spécifique et suit ses conventions. Avec un modèle, vous pouvez lancer votre projet de fonction automatiquement.

Des modèles sont disponibles pour les durées d'exécution suivantes :

6.12.1. Référence d'un objet contextuel Node.js

L'objet context possède plusieurs propriétés auxquelles le développeur de la fonction peut accéder. L'accès à ces propriétés permet de fournir des informations sur les requêtes HTTP et d'écrire des données dans les journaux de la grappe.

6.12.1.1. journal

Fournit un objet de journalisation qui peut être utilisé pour écrire des données dans les journaux de la grappe. Le journal est conforme à l'API de journalisation Pino.

Exemple de journal

function handle(context) {
  context.log.info(“Processing customer”);
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:

Example command

$ kn func invoke --target 'http://example.function.com'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
Copy to Clipboard Toggle word wrap

Vous pouvez modifier le niveau de journalisation en choisissant l'une des valeurs suivantes : fatal, error, warn, info, debug, trace ou silent. Pour ce faire, modifiez la valeur de logLevel en attribuant l'une de ces valeurs à la variable d'environnement FUNC_LOG_LEVEL à l'aide de la commande config.

6.12.1.2. interrogation

Renvoie la chaîne de requête de la demande, le cas échéant, sous forme de paires clé-valeur. Ces attributs se trouvent également sur l'objet contextuel lui-même.

Exemple de requête

function handle(context) {
  // Log the 'name' query parameter
  context.log.info(context.query.name);
  // Query parameters are also attached to the context
  context.log.info(context.name);
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:

Example command

$ kn func invoke --target 'http://example.com?name=tiger'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
Copy to Clipboard Toggle word wrap

6.12.1.3. corps

Renvoie le corps de la demande s'il y en a un. Si le corps de la demande contient du code JSON, celui-ci sera analysé afin que les attributs soient directement disponibles.

Exemple de corps

function handle(context) {
  // log the incoming request body's 'hello' parameter
  context.log.info(context.body.hello);
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande curl pour l'invoquer :

Example command

$ kn func invoke -d '{"Hello": "world"}'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
Copy to Clipboard Toggle word wrap

6.12.1.4. en-têtes

Renvoie les en-têtes de la requête HTTP sous forme d'objet.

Exemple d'en-tête

function handle(context) {
  context.log.info(context.headers["custom-header"]);
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:

Example command

$ kn func invoke --target 'http://example.function.com'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
Copy to Clipboard Toggle word wrap

6.12.1.5. Requêtes HTTP

méthode
Renvoie la méthode de requête HTTP sous la forme d'une chaîne de caractères.
httpVersion
Renvoie la version HTTP sous forme de chaîne de caractères.
httpVersionMajor
Renvoie le numéro de version majeure de HTTP sous la forme d'une chaîne de caractères.
httpVersionMinor
Renvoie le numéro de version mineure HTTP sous forme de chaîne de caractères.

6.12.2. Référence d'un objet contextuel TypeScript

L'objet context possède plusieurs propriétés auxquelles le développeur de la fonction peut accéder. L'accès à ces propriétés permet de fournir des informations sur les requêtes HTTP entrantes et d'écrire des données dans les journaux de la grappe.

6.12.2.1. journal

Fournit un objet de journalisation qui peut être utilisé pour écrire des données dans les journaux de la grappe. Le journal est conforme à l'API de journalisation Pino.

Exemple de journal

export function handle(context: Context): string {
    // log the incoming request body's 'hello' parameter
    if (context.body) {
      context.log.info((context.body as Record<string, string>).hello);
    } else {
      context.log.info('No data received');
    }
    return 'OK';
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:

Example command

$ kn func invoke --target 'http://example.function.com'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
Copy to Clipboard Toggle word wrap

Vous pouvez modifier le niveau de journalisation en choisissant l'une des valeurs suivantes : fatal, error, warn, info, debug, trace ou silent. Pour ce faire, modifiez la valeur de logLevel en attribuant l'une de ces valeurs à la variable d'environnement FUNC_LOG_LEVEL à l'aide de la commande config.

6.12.2.2. interrogation

Renvoie la chaîne de requête de la demande, le cas échéant, sous forme de paires clé-valeur. Ces attributs se trouvent également sur l'objet contextuel lui-même.

Exemple de requête

export function handle(context: Context): string {
      // log the 'name' query parameter
    if (context.query) {
      context.log.info((context.query as Record<string, string>).name);
    } else {
      context.log.info('No data received');
    }
    return 'OK';
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:

Example command

$ kn func invoke --target 'http://example.function.com' --data '{"name": "tiger"}'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
Copy to Clipboard Toggle word wrap

6.12.2.3. corps

Renvoie le corps de la demande, le cas échéant. Si le corps de la demande contient du code JSON, celui-ci sera analysé de manière à ce que les attributs soient directement disponibles.

Exemple de corps

export function handle(context: Context): string {
    // log the incoming request body's 'hello' parameter
    if (context.body) {
      context.log.info((context.body as Record<string, string>).hello);
    } else {
      context.log.info('No data received');
    }
    return 'OK';
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:

Example command

$ kn func invoke --target 'http://example.function.com' --data '{"hello": "world"}'
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
Copy to Clipboard Toggle word wrap

6.12.2.4. en-têtes

Renvoie les en-têtes de la requête HTTP sous forme d'objet.

Exemple d'en-tête

export function handle(context: Context): string {
    // log the incoming request body's 'hello' parameter
    if (context.body) {
      context.log.info((context.headers as Record<string, string>)['custom-header']);
    } else {
      context.log.info('No data received');
    }
    return 'OK';
}
Copy to Clipboard Toggle word wrap

Vous pouvez accéder à la fonction en utilisant la commande curl pour l'invoquer :

Example command

$ curl -H'x-custom-header: some-value’' http://example.function.com
Copy to Clipboard Toggle word wrap

Exemple de sortie

{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
Copy to Clipboard Toggle word wrap

6.12.2.5. Requêtes HTTP

méthode
Renvoie la méthode de requête HTTP sous la forme d'une chaîne de caractères.
httpVersion
Renvoie la version HTTP sous forme de chaîne de caractères.
httpVersionMajor
Renvoie le numéro de version majeure de HTTP sous la forme d'une chaîne de caractères.
httpVersionMinor
Renvoie le numéro de version mineure HTTP sous forme de chaîne de caractères.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat