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

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

问题描述

如果我有ASP经典,是有可能建立一个
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-经典用作发送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经典。而且,这意味着你可以使用多个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的一个经典节目REST,查询使用参数化查询SQLEx preSS数据库,并依托json2.js的编码,返回一个JSON-CN codeD阵列。

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(/^\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经典REST应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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