从快递到外部服务器发布JSON

时间:2013-12-08 17:39:32

标签: json node.js express

我希望能够直接从节点(使用express)将JSON发布到另一台服务器。基本上,我不想在调用不同的api时暴露我的api密钥,但仍然可以调用该服务。

这是我正在尝试做的,但是从服务器而不是客户端: https://github.com/GetResponse/DevZone/blob/master/API/examples/javascript_synopsis.html

我想要实现的客户端JS:

        var api_key = 'ENTER_YOUR_API_KEY_HERE';

        // API 2.x URL
        var api_url = 'http://api2.getresponse.com';

        function add_contact() {

            var campaigns = {};

            // find campaign named 'test'
            $.ajax({
                url     : api_url,
                data    : JSON.stringify({
                    'jsonrpc'   : '2.0',
                    'method'    : 'get_campaigns',
                    'params'    : [
                        api_key,
                        {
                            // find by name literally
                            'name' : { 'EQUALS' : 'test' }
                        }
                    ],
                    'id'        : 1
                }),
                type        : 'POST',
                contentType : 'application/json',
                dataType    : 'JSON',
                crossDomain : true,
                async       : false,
                success     : function(response) {                        
                    // uncomment following line to preview Response
                    // alert(JSON.stringify(response));

                    campaigns = response.result;
                }
            });

            // because there can be only (too much HIGHLANDER movie) one campaign of this name
            // first key is the CAMPAIGN_ID required by next method
            // (this ID is constant and should be cached for future use)
            var CAMPAIGN_ID;
            for(var key in campaigns) {
                CAMPAIGN_ID = key;
                break;
            }

            $.ajax({
                url     : api_url,
                data    : JSON.stringify({
                    'jsonrpc'    : '2.0',
                    'method'    : 'add_contact',
                    'params'    : [
                        api_key,
                        {
                            // identifier of 'test' campaign
                            'campaign'  : CAMPAIGN_ID,

                            // basic info
                            'name'      : 'Test',
                            'email'     : 'test@test.test',

                            // custom fields
                            'customs'   : [
                                {
                                    'name'       : 'likes_to_drink',
                                    'content'    : 'tea'
                                },
                                {
                                    'name'       : 'likes_to_eat',
                                    'content'    : 'steak'
                                }
                            ]
                        }
                    ],
                    'id'        : 2
                }),
                type        : 'POST',
                contentType : 'application/json',
                dataType    : 'JSON',
                crossDomain : true,
                async       : false,
                success     : function(response) 
                {                        
                    // uncomment following line to preview Response
                    // alert(JSON.stringify(response));

                    alert('Contact added');
                }
            });

        }

2 个答案:

答案 0 :(得分:3)

我认为您的节​​点服务器可以充当客户端请求的第三方服务器的代理。

您的服务器可以收集api呼叫所需的所有输入参数,例如add_contact。具有访问第三方服务器的正确凭据的节点服务器进行api调用,并将收到的响应传递给客户端。

您可以在节点中使用内置的http库,或the request module(更方便)来进行这些调用。

基本上,你需要为你需要的外部api制作一个包装器,然后你就可以了。

我希望它有所帮助。

答案 1 :(得分:2)

Node.js为类似于jQuery的AJAX-API的HTTP请求提供API: http://nodejs.org/api/http.html#http_http_request_options_callback