NEWS

[DATABASE] Hướng dẫn sử dụng cURL Rest Api json trong sql server

[DATABASE] Hướng dẫn sử dụng cURL Rest Api json trong sql server
Đăng bởi: Thảo Meo - Lượt xem: 10576 09:56:14, 20/03/2019DATABASE   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng cURL Rest Api sql từ Website trực tiếp trong Sqlserver.

[DATABASE] cURL Rest Api Json sql server

Từ phiên bản Microsoft Sqlserver 2016, Microsoft SQL đã tích hợp mạnh mẽ cho chúng ta các hàm làm việc với Json trong Sql.

rest-api

VD: các bạn có một yêu cầu như sau.

Có một trang web cung cấp API cho chúng ta các kết quả trực tiếp bóng đá livescores, và chúng ta muốn đọc dữ liệu từ API này và chèn dữ liệu trực tiếp xuống cơ sở dữ liệu Sql.

Bình thường, chúng ta sẽ dùng một ứng dụng ví dụ như C# hay VB.NET để sử dụng HttpRequest hay Webclient để lấy dữ liệu API từ website đó về xong, rồi tiếp tục insert xuống database.

Trong bài viết này, mình sẽ hướng dẫn các bạn cách đọc dữ liệu json trực tiếp từ website về sql.

Demo ví dụ:

Mình có đường dẫn URL trả về API json như sau:

http://127.0.0.1/HOBWEB/android_api/test_api

rest-api_hinh1

Và dưới đây là câu lệnh mình đọc Sql trực tiếp về:

DECLARE @json NVARCHAR(MAX)
SET @json =    curl.xget(null, 'http://127.0.0.1/HOBWEB/android_api/test_api')

select * from openjson(@json)
WITH (po nvarchar(255) 'strict $.madh_gop',  
        mamh nvarchar(50) '$.mamh', mact nvarchar(50) '$.mact')  

=> Kết quả như hình bên dưới:

rest_api_hinh2

Các bước thực hiện:

Đầu tiên, các cần download file SqlClrCurl.dll ở cuối bài viết về.

Bước 1: Bật CLR assemblie lên

sp_configure @configname=clr_enabled, @configvalue=1
GO
RECONFIGURE
GO

Bước 2: Tiếp tục thực hiện câu lệnh sau.

USE database_name
GO EXEC sp_changedbowner 'sa'
ALTER DATABASE database_name SET TRUSTWORTHY ON

Bước 3: Tạo Assemblie và hai function PostGet 

--Create the assembly
CREATE ASSEMBLY SqlClrCurl
FROM 'C:\GitHub\sql-server-samples\samples\features\sql-clr\Curl\bin\Release\SqlClrCurl.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS;
GO

CREATE SCHEMA CURL;
GO

--Create the function/procedure
CREATE FUNCTION CURL.XGET (@H NVARCHAR(MAX), @url NVARCHAR(4000))
RETURNS NVARCHAR(MAX)
AS EXTERNAL NAME SqlClrCurl.Curl.Get;
GO

CREATE PROCEDURE CURL.XPOST (@H NVARCHAR(MAX), @d NVARCHAR(MAX), @url NVARCHAR(4000))
AS EXTERNAL NAME SqlClrCurl.Curl.Post;
GO

Sau khi, thực hiện xong, các bạn có thể bắt đầu sử dụng:

1. Sử dụng làm CURL.XGET

select curl.xget(null, 'https://api.iextrading.com/1.0/stock/msft/earnings')

2. Sử dụng hàm CURL.XPOST

declare @hkey nvarchar(200) = N'aeg-sas-key: 9CwFFHbPIwTPVEdXS+W7eMnuPk1/+pouIlhzf5=';
declare @body nvarchar(4000) = N'[{"id":"1807","eventType":"recordInserted","subject":"myapp/vehicles/motorcycles","eventTime": "2017-08-10T21:03:07+00:00","data": {"make": "Ducati","model":"Monster"},"dataVersion":"1.0","metadataVersion":"1"}]';
declare @endpoint nvarchar(1000) = N'https://test-event-grid.eventgrid.azure.net/api/events';

exec curl.XPOST @H = @hkey, @d = @body, @url = @endpoint;

Lưu ý: Nếu bạn thực hiện không thành công, nhớ kiểm tra tắt tường lửa Firewall xem sao nhé.

CHÚC CÁC BẠN THÀNH CÔNG!

DOWNLOAD SOURCE

 

 

THÔNG TIN TÁC GIẢ

[DATABASE] Hướng dẫn sử dụng cURL Rest Api json trong sql server
Đăng bởi: Thảo Meo - Lượt xem: 10576 09:56:14, 20/03/2019DATABASE   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp