如果我有ASP Classic,是否可以構建一個REST樣式的應用程序編程接口(API),它接受JSON中的輸入和返回輸出,甚至可以進行內容協商並以JSON或XML或其他方式傳遞響應格式?我可以使用ASP Classic構建一個REST應用程序嗎?
作爲一個例子,ASP-Classic是否可以用作發送GET請求並期望JSON響應的jQuery自動完成小部件的後盾?
怎麼樣?
如果我有ASP Classic,是否可以構建一個REST樣式的應用程序編程接口(API),它接受JSON中的輸入和返回輸出,甚至可以進行內容協商並以JSON或XML或其他方式傳遞響應格式?我可以使用ASP Classic構建一個REST應用程序嗎?
作爲一個例子,ASP-Classic是否可以用作發送GET請求並期望JSON響應的jQuery自動完成小部件的後盾?
怎麼樣?
當然,爲什麼不呢?
首先,您可以使用Javascript編寫ASP-classic。這意味着你可以利用很多Javascript擴展庫。特別是,在構建REST應用程序時,您可能需要使用json2.js。
這是一個REST程序,它使用ASP-classic,使用參數化查詢查詢SQLExpress數據庫,並依靠json2.js進行編碼,並返回JSON編碼數組。
<%@ language="Javascript" %>
<script language="javascript" runat="server" src='json2.js'></script>
<script language="javascript" runat="server">
if (typeof String.prototype.trim != 'function') {
String.prototype.trim = function() {
return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
}
(function() {
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms675318(v=vs.85).aspx
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms678273(v=vs.85).aspx
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms675946(v=vs.85).aspx
ado = {
// data types
variant : 12,
char : 129,
varChar : 200,
single : 4, // DBTYPE_R4
date : 133, // DBTYPE_DBDATE
time : 134, // DBTYPE_DBTIME
// parameter directions
input : 1,
output : 2,
inputOutput : 3,
returnVal : 4,
directionUnknown : 0,
// command types
cmdUnspecified : -1,
cmdText : 1,
cmdTable : 2,
cmdStoredProc : 4,
cmdUnknown : 8,
cmdFile : 256,
cmdTableDirect : 512
};
queryDb = function(like) {
var rs, result = [], cmd, query, param,
conn = new ActiveXObject("ADODB.Connection");
conn.ConnectionString =
'Provider=SQLOLEDB.1;' +
'Integrated Security=SSPI;' +
'Persist Security Info=False;' +
'Initial Catalog=AVWKS2008LT;' +
'Data Source=.\\SQLEXPRESS';
conn.Open();
cmd = new ActiveXObject("ADODB.Command");
cmd.ActiveConnection = conn;
cmd.CommandType = ado.cmdText;
query = 'SELECT distinct Lastname as lname ' +
'FROM SalesLT.Customer ';
if (like !== null) {
query += 'WHERE LastName like ? ';
like += '%';
param = cmd.CreateParameter("", ado.varChar, ado.input, like.length, like);
cmd.Parameters.Append(param);
}
query += 'ORDER BY lname ';
cmd.CommandText = query;
rs = cmd.Execute(); // typeof ADODB.Recordset
while(!rs.EOF) {
// retrieve the 0th field
result.push(rs.Fields(0).Value.trim());
rs.MoveNext();
}
conn.Close();
return result;
};
}());
try {
// jquery UI autocomplete requires the search term to be 'term'
var t = Request.QueryString('term') + '',
token = (t == 'undefined') ? null:t,
r = queryDb(token);
Response.Write(JSON.stringify(r));
}
catch(e) {
var error = {error: e.message};
Response.Write(JSON.stringify(error));
}
</script>
ASP只是非常輕微的加強腳本引擎。如果你可以編碼它可以做到這一點。你可以通過Response.Write
或Response.BinaryWrite
寫任何你喜歡的東西。所以答案是肯定的。
如果你要做JSON,你最好在JScript服務器端工作。然後您可以使用標準的JSON stringyfiers來生成JSON結果。
您也可以使用像我aspJSON類:https://github.com/rcdmk/aspJSON
' instantiate the class
Dim oJSON = New JSON
' add properties
oJSON.Add "prop1", "someString"
oJSON.Add "prop2", 12.3
oJSON.Add "prop3", Array(1, 2, "three")
' get the JSON formatted output
Dim jsonSting
jsonString = oJSON.Serialize() ' this will contain the string representation of the JSON object
不明白爲什麼你是問和回答你自己的問題:■ – AnthonyWJones
@AnthonyWJones - 只是分享我所知道的,只是分享我所知道的。另請參閱:http://meta.stackexchange.com/a/2729/140407 – Cheeso
我明白了,感謝您的鏈接。 – AnthonyWJones