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

这有效:

$.post( 'http://api.imgur.com/2/upload.json', { key: 'dsfdwerwersf53534dfsfse3', image: 'http://sofzh.miximages.com/javascript/UH17u.png' }, function( data ) { console.log( data.upload.links.original ); } ); 

当我在Chrome的控制台中运行时,imgur会立即向我发送上传图片的url: http://sofzh.miximages.com/javascript/KrHMY.png ://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://sofzh.miximages.com/javascript/UH17u.png' } ) .end( function( data ) { console.log( data.upload.links.original ); }); }); app.listen( '8080' ); 

当我运行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\\"}"}}', 

关键部分是: No API key was sent 。 为什么imgur不能识别我用POST发送的key

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

有时候jQuery做了很多魔术,很难看到它。

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

但在这里我敢打赌,身体最多只能是一个json或你的物体。 JQuery默认是urlencode,就像大多数API都希望POST主体一样。 使用

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