API

Les API sont principalement utilisées pour exposer des terminaux HTTP personnalisés sur le serveur de l’orchestrateur. Ces terminaux HTTP peuvent servir des pages HTML personnalisées ou faciliter des flux d’identité variés. Les extensions d’API peuvent également être utilisées pour d’autres tâches telles que l’exécution d’un script personnalisé.

Propriétés de configuration

Le bloc apis contient une liste d’API.

Name

name représente le nom de l’API.

Serve Service Extension

serveSE est utilisé pour définir une extension de service API personnalisée. Pour plus de détails sur la façon de définir une extension, veuillez consulter les documents relatifs aux extensions de services.

Exemples

apis:
  - name: exampleAPI
    serveSE:
      funcName: Serve
      file: /etc/maverics/extensions/api.go
ℹ️
Pour enregistrer des terminaux HTTP sur le serveur de l’orchestrateur, il est nécessaire d’utiliser le routeur présent dans le package github.com/strata-io/service-extension/router. L’extension ci-dessous explique comment enregistrer un terminal.

/etc/maverics/extensions/api.go

package main

import (
	"fmt"
	"net/http"

	"github.com/strata-io/service-extension/orchestrator"
)

func Serve(api orchestrator.Orchestrator) error {
	var (
		logger = api.Logger()
		router = api.Router()
	)

	logger.Info("se", "exposing custom API")

	err := router.HandleFunc("/error.html", func(rw http.ResponseWriter, req *http.Request) {
		logger.Info("se", "received error page request")

		_, _ = rw.Write([]byte(errorPageText))
	})
	if err != nil {
		return fmt.Errorf("failed to register route: %w", err)
	}

	return nil
}

const errorPageText = "Oops, it looks like there was an error. Please contact [email protected] for help."