Je suis en train de mettre en œuvre les services ReSTful SICF pour un client. Le service SICF a un seul gestionnaire (implémentant IF_HTTP_EXTENSION~HANDLE_REQUEST
) et cela appelle d'autres classes de gestion d'API. La classe de traitement de l'API est stockée sur le chemin entrant comme celui-ciComment faire correspondre les modèles dans une requête de sélection ABAP?
DDIC Table: ZAPI_HNLDRS
/animals/:id | ZCL_HANDLE_ANIMALS
/animals/:id/tiger/:id | ZCL_HANDLE_TIGER
Lorsque l'API est appelée /animals/:id/tiger/:id
ressemble /animals/4545152/tiger/1423331
.
Comment puis-je appeler ZAPI_HNDLRS pour obtenir ZCL_HANDLE_TIGER?
Bien sûr, cela ne va pas aider,
select single HANDLING_CLASS from ZAPI_HNDLRS
into <wa> where uri = '/animals/4545152/tiger/1423331'
Je crois que je dois utiliser REGEX sous une forme - j'amn't sûr de savoir comment bien. Comment faire correspondre les modèles dans une requête de sélection ABAP?
mise à jour
La raison pour laquelle j'ai une table pour stocker les gestionnaires d'API est parce que je veux tout le processus soit dynamique.
Nous pourrions avoir de nouvelles URLs qui pourraient être ajoutées sur une période de temps qui pourrait ressembler à ceci.
Merci pour les réponses qui utilisent SPLIT Mais ce n'est pas encore entièrement dynamique. Il pourrait y avoir plusieurs nouvelles URL qui pourraient apparaître dans le futur. Par exemple.
/animals/:id/tiger/:id/claws
/animals/:id/tiger/:id/claws/:id
:id - is an unique id
Lorsque de tels cas se présentent, il y aura de nouvelles entrées de gestionnaire dans le tableau ZAPI_HNDLRS
. Par conséquent, j'aurais besoin d'une logique générique pour convertir n'importe quel chemin de ressource entrant. disons: /animals/1234243242423/tiger/32423443344/claws
à son modèle qui est stocké /animals/:id/tiger/:id/claws
Alors que je connais le bon gestionnaire pour ramasser de la table.