Imgur通过客户端javascript上传,但不是node.js. 狼狈

vjk*_*005 0 javascript jquery node.js imgur

这有效:

    $.post( 
        'http://api.imgur.com/2/upload.json', 
        { 
            key: 'dsfdwerwersf53534dfsfse3', 
            image: 'http://i.imgur.com/UH17u.png' 
        }, 
        function( data ) { console.log( data.upload.links.original ); }
    );
Run Code Online (Sandbox Code Playgroud)

当我在Chrome的控制台中运行时,imgur会立即向我发送上传图片的网址:http://i.imgur.com/KrHMY.png.优秀.

.

现在我在服务器端使用node.js尝试同样的事情,但它不起作用:

    var 
        express = require( 'express' )
    ,   app = express.createServer()
    ,   request = require( 'superagent' );


    app.get( '/', function( req, res ) {
        request
            .post( 'http://api.imgur.com/2/upload.json' )
            .send( { key: 'dsfdwerwersf53534dfsfse3', image: 'http://i.imgur.com/UH17u.png' } )
            .end( function( data ) {
                console.log( data.upload.links.original );
            });
    });

    app.listen( '8080' );
Run Code Online (Sandbox Code Playgroud)

当我运行node.js应用程序时,imgur会发回这个响应:

text: '{"error":{"message":"No API key was sent, and no user is authenticated","request":"\\/2\\/upload.json","method":"post","format":"json","parameters":"image = {\\"key\\":\\"dsfdwerwersf53534dfsfse3\\",\\"image\\":\\"http:\\/\\/i.imgur.com\\/UH17u.png\\"}"}}',
Run Code Online (Sandbox Code Playgroud)

关键部分是:No API key was sent.为什么imgur不承认key我正在发送POST

我同时使用尝试requestsuperagent模块.我觉得愚蠢无法弄清楚为什么这么简单的东西不起作用.感谢任何指针.

3on*_*3on 5

jQuery有时会做很多魔术,很难看到它.

在这里我也打赌两件事,我在月份没有使用过superagent而且我有这样的愚蠢错误让我感到难过.

但在这里我敢打赌,身体最多只能是一个json或你的物体.JQuery默认情况下urlencode就像大多数API想要POST主体一样.使用

var = require('querystring');
/*...*/
.send(qs.encode({ key: '...', image: '...' }))
Run Code Online (Sandbox Code Playgroud)

  • 在那个愚蠢的事情之前,我已经失去了4小时. (3认同)