-->
ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00

BLANTERWISDOM105

Cara GET dan POST REST API Menggunakan SQL SERVER

10/03/2020

API yang telah dibuat atau telah disediakan oleh pihak Ketika terkadang mempunyai http method yang bermacam-macam. Jika method yang digunakan berupa GET, kita bisa mengujinya langsung menggunakan Browser. Tapi bagaimana dengan methode lainnya seperti POST. Selain masalah method, pengujian yang tidak bisa dilakukan di browser adalah Ketika API mengharuskan untuk mengirimkan beberapa parameter di header dan lengkap dengan key dan valuenya. Solusi yang biasa dilakukan adalah dengan menggunakan POSTMAN. Namun kali ini saya akan membagikan cara lain bukan dengan menggunakan POSTMAN tetapi menggunakan T-SQL Server di Sql Server Management Studio.

Method GET API Menggunakan SQL Server

Fungsi method GET adalah menampilkan data dan menambahkan URI yang nantinya ditampung pada action. Cara menampilkan data dari API menggunakan SQL Server adalah sebagai berikut


Declare @Object as Int;
DECLARE @hr  int
Declare @json as table(Json_Table nvarchar(max))

Exec @hr=sp_OACreate 'MSXML2.ServerXMLHTTP.6.0', @Object OUT;
IF @hr <> 0 EXEC sp_OAGetErrorInfo @Object
Exec @hr=sp_OAMethod @Object, 'open', NULL, 'get',
                 'https://localhost:44387/api/data/forall', --Your Web Service Url (invoked)
                 'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @Object
Exec @hr=sp_OAMethod @Object, 'send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @Object
Exec @hr=sp_OAMethod @Object, 'responseText', @json OUTPUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @Object

INSERT into @json (Json_Table) exec sp_OAGetProperty @Object, 'responseText'
-- select the JSON string
select * from @json
-- Parse the JSON string
SELECT *
-- Case Sensitive oleh karena itu penamaan harus sama
-- dari kapitalnya
FROM OPENJSON((select * from @json))
  WITH (
    [Username] varchar(50) '$.Username',
    [Password] varchar(20) '$.Password'
  );
EXEC sp_OADestroy @Object

Method POST API Menggunakan SQL Server

Fungsi method POST adalah mengirimkan data langsung kepada action tanpa melalui URI sehingga method ini bersifat uncacheable (tidak dapat disimpan pada cache). Cara mengirimkan parameter dari SQL Server ke API dan mendapatkan return berupa nilai misalkan berupa token adalah sebagai berikut;


exec master.dbo.sp_configure 'Ole Automation Procedures', 1
RECONFIGURE
exec master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE


DECLARE @authHeader NVARCHAR(64);
DECLARE @contentType NVARCHAR(64);
DECLARE @postData NVARCHAR(2000);
DECLARE @responseText NVARCHAR(2000);
DECLARE @responseXML NVARCHAR(2000);
DECLARE @ret INT;
DECLARE @status NVARCHAR(32);
DECLARE @statusText NVARCHAR(32);
DECLARE @token INT;
DECLARE @url NVARCHAR(256);
DECLARE @Authorization NVARCHAR(200);

--set your post params
--setRequestHeader is used to set headers that you may have defined in your API
SET @authHeader = 'BASIC 0123456789ABCDEF0123456789ABCDEF';
SET @contentType = 'application/x-www-form-urlencoded';
SET @postData = 'username=user&password=user&grant_type=password'
SET @url = 'https://localhost:44387/token'

-- Open the connection.
EXEC @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @token OUT;
IF @ret <> 0 RAISERROR('Unable to open HTTP connection.', 10, 1);

-- Send the request.
EXEC @ret = sp_OAMethod @token, 'open', NULL, 'POST', @url, 'false';
--set a custom header Authorization is the header key and VALUE is the value in the header
EXEC sp_OAMethod @token, 'SetRequestHeader', NULL, 'Authorization', 'VALUE'

EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Authentication', @authHeader;
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Content-type', @contentType;
EXEC @ret = sp_OAMethod @token, 'send', NULL, @postData;

-- Handle the response.
EXEC @ret = sp_OAGetProperty @token, 'status', @status OUT;
EXEC @ret = sp_OAGetProperty @token, 'statusText', @statusText OUT;
EXEC @ret = sp_OAGetProperty @token, 'responseText', @responseText OUT;

-- Show the response.
PRINT 'Status: ' + @status + ' (' + @statusText + ')';
PRINT 'Response text: ' + @responseText;

-- Close the connection.
EXEC @ret = sp_OADestroy @token;
IF @ret <> 0 RAISERROR('Unable to close HTTP connection.', 10, 1);
Share This :

0 Comments