Categories: Software

Ein Web Service mit SOAP::Lite

SOAP::Lite bietet viele Module, die eine Vielzahl von Übertragungs-Protokollen unterstützen: POP3, SMTP, HTTP und TCP. Im Rahmen dieses Artikels werde ich mich auf den häufigsten Anwendungsfall beschränken, einen einfachen CGI-basierten Web Service, der über HTTP kommuniziert. Die folgenden Beispiele setzen voraus, dass Sie Zugang zu einem Web Server wie Apache oder IIS haben und wissen, wie man ihn konfiguriert, um Perl-basierte CGI-Skripte nutzen zu können. Sie brauchen also:

  • SOAP::Lite Version 0.55
  • Zugang zu einem Webserver, der Perl-basierte CGI-Skripte ausführen kann
  • einen Text-Editor

Request-Handler für den Echo-Service

Der erste Schritt beim Erstellen eines Web Service besteht im Konstruieren des Request-Handlers – er enthält den Kern der Applikation, die nach außen als Web Service in Erscheinung tritt. SOAP::Lite macht das Bereitstellen von Services einfach, indem es automatisch Requests an die in Perl-Modulen enthaltenen Subroutinen versendet. SOAP::Lite verwendet den Namensraum des Requests, um festzustellen, an welches Perl-Modul der Request zu senden ist, und ruft in diesem Perl-Modul die Subroutine mit dem selben Namen wie die Request-Methode auf.

Aus diesem Grund ist unser Request-Handler in einem einfachen Perl-Modul enthalten. Das Perl-Modul enthält eine Subroutine für jede nach außen sichtbare Methode des Web Service. In unserem Beispiel eines Echo-Service, der nur aus einer Methode namens Echo besteht, würde man ein Perl-Modul namens Echo.pm erstellen, das aus einer einzigen Subroutine namens echo besteht:


1 #!/usr/bin/perl
2 # Dateiname: Echo.pm
3 # Echo-Web Service Perl-Modul - an dieses Modul werden
4 # Requests an den Echo-Web Service gesendet.
5 # Autor: Byrne Reese
6 package Echo;
7 use strict;
8 sub echo {
9 my ($self,@args) = @_;
10 return join(",",@args);
11 }
12 1;

In Zeile 6 legen wir den Namen des Packages für das Modul und damit den Namen unseres Web Services fest. Der gewählte Name kann nicht völlig willkürlich gewählt werden. Vielmehr gibt der Name des Service/Package den Namensraum vor, auf den der Service antwortet. In unserem Beispiel ist der Name einfach: Echo. In den Zeilen 8 bis 11 definieren wir die einzige Methode, die dieser Web Service zur Verfügung stellt, als Perl-Subroutine. Der Name der Methode ist Echo, und sie verlangt ein Argument. Falls der Anwender mehr als ein Argument an die Echo-Methode übergibt, wird die join-Funktion von Perl benutzt (Zeile 10), um alle Parameter miteinander zu verknüpfen und als Response zurückzugeben.

Sie werden sich vielleicht wundern, dass von SOAP::Lite in dem Beispiel oben gar nicht die Rede ist. Tatsächlich könnte das Skript ein beliebiges Perl-Modul auf einem Webserver sein und so jeden gewünschten Web Service bereitstellen. Aber hier ist Vorsicht geboten, denn einen Web Service einfach auf diese Weise zu implementieren, kann gefährlich sein, da dadurch der gesamte Webserver anfällig für Angriffe werden könnte.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

3 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

3 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

3 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

5 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

5 Tagen ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

5 Tagen ago