我可以使用 ASP Classic 构建 REST 应用程序吗? [英] Can I build a REST application using ASP Classic?

查看:22
本文介绍了我可以使用 ASP Classic 构建 REST 应用程序吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有 ASP Classic,是否可以构建一个REST 风格的应用程序编程接口 (API),接受输入并以 JSON 格式返回输出,或者甚至进行内容协商并以 JSON 或 XML 或其他格式传递响应?

If I have ASP Classic, is it possible to build a REST-style application programming interface (API), that accepts input and returns output in JSON, or even does content negotiation and delivers the response in JSON or XML or some other format?

例如,可以将 ASP-Classic 用作发送 GET 请求并期望 JSON 响应的 jQuery 自动完成小部件的支持吗?

As an example, could ASP-Classic be used as a backing for a jQuery autocomplete widget that sends GET requests and expects JSON responses?

怎么做?

推荐答案

当然,为什么不呢?

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

First, you can program ASP-classic in Javascript. And, that means you can take advantage of the many Javascript extension libraries. In particular , when building a REST app, you might want to use json2.js.

这是一个使用 ASP-classic 的 REST 程序,使用参数化查询查询 SQLExpress 数据库,并依靠 json2.js 进行编码,返回一个 JSON 编码的数组.

This is a REST program that uses ASP-classic, queries a SQLExpress database using a parameterized query, and relying on json2.js for the encoding, returns a JSON-encoded array.

<%@ 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>

这篇关于我可以使用 ASP Classic 构建 REST 应用程序吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆