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éeLes 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èglesGET
/rules/{rule}
Retourne une règle spécifiqueExemple:
/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.