Masih membahas mengenai API, jika diartikel sebelumnya Creativauz menjelaskan Mengenal API Sebagai Fungsi dan Contohnya, sekarang kita membahas detailnya ada dua sistem API, yaitu SOAP yang udah mulai ditinggalkan, dan ada REST yang kini makin banyak diminati dan terus dikembangkan.
Pengertian SOAP
Apa itu SOAP ? SOAP adalah singkatan dari Simple Object Access Protocol, yang pada tahun 1998 lalu diciptakan oleh Microsoft dimana project ini secara integral menjadi bagian dari SOA atau Service-Oriented Architecture.
Lalu apakah pengertian dari Simple Object Access Protocol ? yaitu protokol komunikasi web yang secara standar melakukan exposure web service dengan mengirim data memakai protokol HTTP ataupun SMTP.
Secara eksklusif, SOAP memakai tipe dokumen XML atau Extensible Markup Language, guna melakukan pengiriman pesan, SOAP juga disebut sebagai protokol legal dengan fitur keamanan yang secara built-in memiliki peraturan yang ketat,SOAP memakai bandwidth besar-besaran dengan kompleks yang sesuai resourcenya.
Kelebihan dan Kekurangan API SOAP
Berikut Creativauz rangkum beberapa kelebihan dari SOAP yang diantaranya adalah, Built-in error handling, ter-standar, SOAP akan bekerja dengan baik jika environment yang terdistribusi, SOAP sebagai transportasi sistem yang independent dan mengukung proses automatisasi beberapa bahasa pemrograman.
Sedangkan kekurangan SOAP adalah sistemnya sangat kompleks, cukup berat proses dan kinerjanya bila dibanding dengan REST, dan SOAP tidak fleksibel, berikut ini adalah contoh API SOAP jika di render dengan bahasa pemrograman yang beda, kita ambil contoh python dan perl.
#!/usr/bin/python
from SOAPpy import SOAPProxy
def ConnectAFA(params):
username = params['UserName']
password = params['Password']
domain = params['Domain']
proxy = 'https://'+sHost+'/AFA/php/ws.php?wsdl'
namespace = 'https://www.algosec.com/afa-ws'
server = SOAPProxy(proxy, namespace)
if (DebugMode):
server.config.dumpHeadersIn = 1
server.config.dumpHeadersOut = 1
server.config.dumpSOAPOut = 1
server.config.dumpSOAPIn = 1
response = server.ConnectRequest(UserName=username, Password=password, Domain=domain)
return response
def SendQueryRequest(params):
SessionID = params['SessionID']
QueryInput = params['QueryInput']
proxy = 'https://'+sHost+'/AFA/php/ws.php?wsdl'
namespace = 'https://www.algosec.com/afa-ws'
server = SOAPProxy(proxy, namespace)
if (DebugMode):
server.config.dumpHeadersIn = 1
server.config.dumpHeadersOut = 1
server.config.dumpSOAPOut = 1
server.config.dumpSOAPIn = 1
response = server.QueryRequest(SessionID=SessionID, QueryInput=QueryInput)
return response
def DisconnectAFA(params):
SessionID = params['SessionID']
proxy = 'https://'+sHost+'/AFA/php/ws.php?wsdl'
namespace = 'https://www.algosec.com/afa-ws'
server = SOAPProxy(proxy, namespace)
if (DebugMode):
server.config.dumpHeadersIn = 1
server.config.dumpHeadersOut = 1
server.config.dumpSOAPOut = 1
server.config.dumpSOAPIn = 1
response = server.DisconnectRequest(SessionID=SessionID)
return response
sHost = '192.168.3.82'
DebugMode = False
print "\n" + "Submitting connect request:" + "\n"
values = {'UserName': 'admin', 'Password': 'algosec', 'Domain': ''}
afa_connect = ConnectAFA(values)
SessionID = afa_connect
print "Returned Session ID: "+repr(SessionID)
print "\n" + "Submitting query request:" + "\n"
QueryParams = {'SessionID': SessionID,'QueryInput': {'Source': '192.168.1.100', 'Destination': '10.228.16.10', 'Service': 'tcp/22'}}
QueryResult = SendQueryRequest(QueryParams)
print QueryResult
print "\n" + "Submitting disconnect request:" + "\n"
DisconnectParams = {'SessionID': SessionID}
DisconnectResult = DisconnectAFA(DisconnectParams)
print DisconnectResult
#!/usr/bin/perl -w
use Data::Dumper;
use SOAP::Lite;
my $soap = SOAP::Lite->proxy('https://localhost/contoh-script/isi.php?wsdl');
$soap->transport->ssl_opts(
verify_hostname => 0,
SSL_verify_mode => 0x00
);
sub ConnectAFA
{
my $sUserName = shift; # User name
my $sPassword = shift; # Password
my $sDomain = shift; # Domain name or empty for non domain envirnment
$sDomain = (!defined $sDomain) ? '' : $sDomain;
my $method = SOAP::Data->name('ConnectRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});
my @params = (
SOAP::Data->name(UserName => $sUserName),
SOAP::Data->name(Password => $sPassword),
SOAP::Data->name(Domain => $sDomain)
);
my $sSessionID = $soap->call($method => @params)->result;
}
sub ExecQuery
{
my $sSessionID = shift;
my $sQueryTarget = shift;
$sQueryTarget = (!defined $sQueryTarget) ? '' : $sQueryTarget;
my $method = SOAP::Data->name('QueryRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});
my $QueryInput = SOAP::Data->name('QueryRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});
my @params = (
SOAP::Data->name(SessionID => $sSessionID),
SOAP::Data->name(QueryInput => \SOAP::Data->value(
SOAP::Data->name(Source => '*'),
SOAP::Data->name(Destination => '*'),
SOAP::Data->name(Service => '80'),
SOAP::Data->name(Service => '443')
)
),
SOAP::Data->name(QueryTarget => $sQueryTarget)
);
return $soap->call($method => @params);
}
sub DisconnectAFA
{
my $sSessionID = shift;
my $method = SOAP::Data->name('DisconnectRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});
my @params = (
SOAP::Data->name(SessionID => $sSessionID),
);
return $soap->call($method => @params)->valueof('//DisconnectResponse');
}
my $sSessionID = ConnectAFA('admin', 'algosec', '');
print "\n";
print "Session ID: '" . $sSessionID ."'";
print "\n";
my $QueryResult = ExecQuery($sSessionID, 'afa-276');
foreach my $Result ($QueryResult->valueof('//QueryResult/')) {
print Dumper($Result);
}
print "\n";
my $Disconnect = DisconnectAFA($sSessionID);
print "Disconnect: ";
print $Disconnect;
print "\n";
Lebih lanjut tentang REST API
Apakah REST API itu ? REST adalah singkatan dari Representational State Transfer, yang memiliki arsitektur dengan secara sistematis yang membuat program dapat berkomunikasi satu sama lain, yang berfungsi sesuai komponen beberapa file, media hingga obyek terhadap beberapa hardware.
REST hadir untuk memenuhi ketidakstabilan dari SOAP yang memberikan kemudahan bagi developer atau programmer atau para pembuat software untuk menciptakan program secara mudah mengakses web service, secara arsitektur service, REST disebut sebagai RESTful, sekarang ini memang banyak developer yang merancang Public API.
Saat akan menentukan apakah memakai SOAP atau REST, tentu harus mengetahui dasarnya, yaitu jika memakai REST, lebih berbasis data, yang bergantung dengan protokol komunikasi tanpa status men-detail, atau yang bisa disebut dengan HTTP.
REST bisa mengolah data berupa YAML, XML ataupun format lainnya, sederhananya, REST memakai format JSON dan SOAP memakai XML.
Kelebihan dan Kekurangan REST API
Sebagai versi terbaik dari SOAP, tentu REST memiliki kelebihan,diantaranya adalah, kemudahan dipelajari dan dioperasikan, karenanya REST sangatlah efisien dan cepat, strukturnya amat sesuai dengan teknologi website masa kini, memakai standar yang portable seperti Swagger dan OpenAPI 3.0
Meski begitu, tidak ada yang sempurna dan ada kekurangan dari REST API, yaitu REST tidak lebih secure dari SOAP, untuk envirnment terdistribusi, REST sangatlah tidak cocok.
Dibawah ini adalah contoh dari REST API, dimana dengan code yang melakukan request RESTAPI yang dibuat dengan fungsi login.
POST /api/2.2/auth/signin HTTP/1.1
HOST: my-server
Content-Type:text/xml
Disini adalah cara request untuk mendapat daftar dari user
GET /api/2.2/sites/9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d/users/users HTTP/1.1
GET /api/2.2/sites/9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d/users/users HTTP/1.1
HOST: my-server
X-Tableau-Auth: 12ab34cd56ef78ab90cd12ef34ab56cd
Sedangkan dibawah ini ada request untuk UPDATE data user
PUT /api/2.2/sites/9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d/users/9f9e9d9c-8b8a-8f8e-7d7c-7b7a6f6d6e6d HTTP/1.1
HOST: my-server
X-Tableau-Auth: 12ab34cd56ef78ab90cd12ef34ab56cd
Content-Type: text/xml
            SOAP                RESTBerupa Protokol
Berupa Arsitektur
REST bisa memakai SOAP tapi SOAP
Berupta protokol HTTP jadi bisa mengoperasikan SOAPMemanfaatkan JAVA API "JAX-WS" sebagai service yang dioperasikan.JAVA API yang dipakai adalah JAX-RS
Mendefinisikan keamanannya sendiriBergantung pada langkah-langkah keamanan dari transportasi yang mendasarinyaPemakaian bandwith amat
Tidak membutuhkan bandwith besar.
Format yang dipakai adalah XML
Dapat memakai format tabel ataupun teks, html, JSON,xml dllMemakai interface untuk expose logicMemakai URI dalam pengoperasiannya.
SOAP bekerja sebagai fungsi
REST berbasis data.
Meski makin banyak yang memakai REST, bukan berarti SOAP sudah ketinggalan jaman dan tidak cocok lagi dipakai, karena sifatnya yang lebih secure jika dibandingkan dengan REST, SOAP API amat cocok untuk payment gateway dan beberapa online financial service lainnya.
Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H