加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

我可以使用ASP Classic构建REST应用程序吗?

发布时间:2020-12-16 03:31:26 所属栏目:asp.Net 来源:网络整理
导读:如果我有ASP Classic,是否可以构建一个 REST风格的应用程序编程接口(API),接受输入并以 JSON形式返回输出,甚至进行内容协商并以JSON或XML或其他格式传递响应? 作为一个例子,ASP-Classic可以用作jQuery自动完成小部件的后盾,该小部件发送GET请求并期望JSON响
如果我有ASP Classic,是否可以构建一个
REST风格的应用程序编程接口(API),接受输入并以 JSON形式返回输出,甚至进行内容协商并以JSON或XML或其他格式传递响应?

作为一个例子,ASP-Classic可以用作jQuery自动完成小部件的后盾,该小部件发送GET请求并期望JSON响应吗?

怎么样?

解决方法

当然,为什么不呢?

首先,您可以在Javascript中编写ASP-classic.而且,这意味着您可以利用许多Javascript扩展库.特别是,在构建REST应用程序时,您可能希望使用json2.js.

这是一个使用ASP-classic的REST程序,使用参数化查询查询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(/^ss*/,'').replace(/ss*$/,'');
    };
}

(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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读