0

これは機能します:

    $.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 ); }
    );

Chromeのコンソールでこれを実行すると、imgurはアップロードされた画像のURLをすぐに送信します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' );

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 sentkey送信しているものをimgurが認識しないのはなぜPOSTですか?

requestsuperagentモジュールの両方を使ってみました。なぜこんなに単純なことがうまくいかないのか理解できないのはばかげていると思います。ポインタに感謝します。

4

1 に答える 1

5

jQueryは時々非常に多くのことをするので、それを見るのは難しいです。

ここでも2つのことを賭けます。私は月にスーパーエージェントを使用しておらず、このような愚かなエラーが発生して悲しくなりました。

しかし、ここでは、本体はせいぜいjsonまたはあなたのオブジェクトをひもでつなぐものであるに違いありません。ほとんどのAPIと同じように、デフォルトのurlencodeはPOST本体になります。使用する

var = require('querystring');
/*...*/
.send(qs.encode({ key: '...', image: '...' }))
于 2012-08-07T16:13:50.910 に答える