@@ -16,3 +16,102 @@ It include 3rd one, that is basically an example of how to implement a customize
1616
1717PD:
1818It uses HttpWebRequest instead of HttpClient in order to avoid having to use unsupported assemblies by SQL Server.
19+
20+ # How to...
21+
22+ ### ** Deployment Instruction**
23+ ###### ** STEP 1**
24+ ` CREATE DATABASE TestDB; `
25+ ` GO `
26+ ###### ** STEP 2**
27+ ` USE TestDB `
28+ ` GO `
29+ ` sp_configure 'clr enabled',1 `
30+ ` RECONFIGURE `
31+ ` GO `
32+ ###### ** STEP 3**
33+ ` ALTER DATABASE TESTDB SET TRUSTWORTHY ON `
34+ ` GO `
35+ ###### ** STEP 4**
36+ ` CREATE ASSEMBLY [System.Runtime.Serialization] `
37+ ` AUTHORIZATION dbo `
38+ ` FROM N'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Runtime.Serialization.dll' `
39+ ` WITH PERMISSION_SET = UNSAFE--external_access `
40+ ` GO `
41+ ###### ** STEP 5**
42+ ` CREATE ASSEMBLY [Newtonsoft.Json] `
43+ ` AUTHORIZATION dbo `
44+ ` FROM N'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Newtonsoft.Json.dll' `
45+ ` WITH PERMISSION_SET = UNSAFE `
46+ ` go `
47+ ###### ** STEP 6**
48+
49+ ` CREATE ASSEMBLY [API_Consumer] `
50+ ` AUTHORIZATION dbo `
51+ ` FROM N'C:\CLR\API_Consumer.dll' `
52+ ` WITH PERMISSION_SET = UNSAFE `
53+
54+ ` GO `
55+ ###### ** STEP 7**
56+ ` PRINT N'Creating [dbo].[APICaller_GET_Json]...'; `
57+ ` GO `
58+ ` CREATE PROCEDURE [dbo].[APICaller_GET_Json] `
59+ ` @URL NVARCHAR (MAX) NULL `
60+ ` AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Json] `
61+
62+ ### ** Sample of calling Get Method**
63+ -- How to consume GET API
64+ -- How to show Json results.
65+
66+ ` DECLARE @RoutingNumber AS VARCHAR(50) = '122242597' `
67+
68+ ` --Public API: routingnumbers.info `
69+ ` DECLARE @Url VARCHAR(200) = CONCAT('https://www.routingnumbers.info/api/name.json?','rn=',@RoutingNumber) `
70+
71+ ` DECLARE @Results AS TABLE `
72+ ` ( `
73+ ` Context varchar(max) `
74+ ` ) `
75+
76+ ` DECLARE @Result AS VARCHAR(MAX) `
77+
78+ ` INSERT INTO @Results `
79+ ` EXEC [dbo].[APICaller_GET_Json] @Url `
80+
81+ ` --Result: Row per value `
82+
83+ ` SELECT B.* `
84+ ` FROM ( `
85+ ` SELECT Context `
86+ ` from @Results `
87+ ` )tb `
88+ ` OUTER APPLY OPENJSON (context) B `
89+
90+ ` --Result: column per value. `
91+ ` SELECT `
92+ ` [name] `
93+ ` ,[rn] `
94+ ` ,[message] `
95+ ` ,[code] `
96+ ` FROM ( `
97+ ` SELECT Context `
98+ ` from @Results `
99+ ` )tb `
100+ ` OUTER APPLY OPENJSON (context) `
101+ ` WITH `
102+ ` ( [name] VARCHAR(20) '$.name' `
103+ ` , [rn] VARCHAR(20) '$.rn' `
104+ ` , [message] VARCHAR(20) '$.message' `
105+ ` , [code] INT '$.code' `
106+ ` ); `
107+
108+ ### ** Sample of calling Authentication Get/POST Method**
109+
110+ EXEC [dbo].APICaller_POST
111+ @URL = ' http://localhost:5000/api/auth/login'
112+ , @Body = '{"username": "geraldo","password": "password"}'
113+
114+
115+ EXEC [dbo].APICaller_GETAuth
116+ @URL = 'http://localhost:5000/api/values'
117+ , @Token = 'Bearer aeyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwidW5pcXVlX25hbWUiOiJnZXJhbGRvIiwibmJmIjoxNTM4MTA3NDkxLCJleHAiOjE1MzgxOTM4OTEsImlhdCI6MTUzODEwNzQ5MX0.j9kX5KXJP6yHBJZZK07tNQayyUkuQf8CtoDDDwdPISZy0eb9RQvnooB3oMND54-5Yzv5LMO9nuM69t2PJh5iXw'
0 commit comments