Skip to main content

API REST Publicodes

Publicodes étant un module javascript, il peut être difficile de l'intégrer dans des projets écrits dans d'autres langages (PHP, Python, etc.) ou même dans certaines applications comme des tableurs (excel, gsheet, etc.).

Pour répondre à ce besoin nous avons développé un module pour vous permettre de créer rapidement une API REST avec vos règles.
Il se compose d'un middleware Koajs qui expose des points d'entrée analogues à l'interpréteur Publicodes :

  • POST /evaluate Évalue une ou plusieurs expressions avec une situation donnée

    Les paramètres sont envoyés au format JSON :
    expressions une/des expressions publicodes (type : string | number | object | (string | number | object)[])
    Exemple: ["dépenses primeur", {valeur : "dépenses primeur * 2"}]

    situation une situation publicodes (type : object)
    Exemple: { "prix . carottes" : "1€/kg" }

  • GET /rules Retourne la liste de toutes vos règles

  • GET /rules/{rule} Retourne une règle spécifique

    Exemple: /rules/prix%20.%20carottes

Installation

npm install @publicodes/api
# or
yarn add @publicodes/api

Utilisation

import Router from '@koa/router'
import Koa from 'koa'
import Engine from 'publicodes'
import { koaMiddleware as publicodesAPI } from '@publicodes/api'

const app = new Koa()
const router = new Router()

// Create middleware with your Engine
const apiRoutes = publicodesAPI(new Engine('coucou: 0'))

// Basic routes usage (/evaluate, /rules, etc.)
router.use(apiRoutes)

// Or use with specific route prefix (/v1/evaluate, /v1/rules, etc.)
router.use('/v1', apiRoutes)

app.use(router.routes()).listen(3000)

// ...

Un fichier d'exemple complet se trouve dans les sources si besoin : example.ts.

Projets phares