某陌習慣調用ASMX文件,開發語言最近比較常用C#
結果這次合作的同事習慣用Python,還強調只會用REST風格的WebService
某陌心想這不是WebAPI嗎?趕緊學習……
正式引入WebAPI之前先簡單說明一下 RESTful 风格的地址
示例(和我之前常用的.asmx文件略有不同,不以.asmx結尾):
https://blog.csdn.net/sinat_28782331
SoapUI執行效果就是某陌博客的主頁。
不過這個也不影響啦~沒必要一定讓python開發的API轉化成ASMX格式,SQL其實也是可以調用這種網址的,就算放在Anaconda 上的 WebService 也是不受影響的。
這里簡單寫了一個Demo:
Python代碼如下
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/loginurl', methods=['GET', 'POST'])
def login():
# 利用request取得使用者端傳來的方法為何
if request.method == 'POST':
# 利用request取得表單欄位值
return 'Hello ' + request.values['username']
# 非POST的時候就會回傳一個空白的模板
return render_template('login.html')
if __name__ == '__main__':
app.debug = True
app.run()
login.html代碼如下
Hello Page
由上可知:GET返回的是默認的login.html
Declare @Object as Int Declare @ResponseText as nvarchar(4000) Declare @ServiceUrl varchar(max)='http://10.4.97.211:82/loginurl' --url自定義 EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; --創建OLE元件物件 Exec sp_OAMethod @Object, 'open', NULL, 'get',@ServiceUrl,'false' --打開連結,注意是get還是post EXEC sys.sp_OAMethod @object,'setRequestHeader',NULL,'Content-Type','application/x-www-form-urlencoded;charset=UTF-8' Exec sp_OAMethod @Object, 'send',NULL EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT --輸出參數 Select @ResponseText --輸出結果 Exec sp_OADestroy @Object
返回結果:
# 非POST的時候就會回傳一個空白的模板
Hello Page
POST返回 hello + username
Declare @Object as Int Declare @ResponseText as nvarchar(4000) Declare @ServiceUrl varchar(max)='http://10.4.97.211:82/loginurl' --url自定義 Declare @RequestText as varchar(8000); set @RequestText='username=123' --此處值參如果有多個,用&分隔,例 username=123&password=123 EXEC sp_OACreate 'MSXML2.XMLHTTP.3.0', @Object OUT; --創建OLE元件物件 Exec sp_OAMethod @Object, 'open', NULL, 'POST',@ServiceUrl,'false' --打開連結,注意是get還是post EXEC sys.sp_OAMethod @object,'setRequestHeader',NULL,'Content-Type','application/x-www-form-urlencoded' --EXEC sp_OAMethod @object, 'setRequestHeader', null, 'SOAPAction', 'login' Exec sp_OAMethod @Object, 'send',NULL,@RequestText EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT --輸出參數 --EXEC SP_OAGETERRORINFO @OBJECT Select @ResponseText --輸出結果 Exec sp_OADestroy @Object
返回結果:Hello 123
參考資料:


![SQLServer 調用 WebAPI [WSDL] SQLServer 調用 WebAPI [WSDL]](http://www.mshxw.com/aiimages/31/977854.png)
