2016-10-23 15 views
0

PUTリクエストを使用して既存のdynamodbテーブルにアイテムを追加しようとしています。私は.putと.putItem関数を使うことを含め、いくつかのバリエーションを試しました。ブラウワーへのIハードコードURL私は次のエラーを取得するとき:dynamodbテーブルにPUTを追加する際に問題が発生しました。node.js aws-sdk

Cannot GET /add-student?student_id=5&name=carl 

私は私にこのエラーを与えた正確なURLをカットし、APIのテストアプリ、ポストマンに貼り付けた場合、それは完璧に動作します。エラーがGETリクエストを試みたと言いますが、私のコードに何が間違っているのか分かりません。

ここに私のコードです。

app.put('/add-student', function (req, res) { 
    var params = { 
     TableName : "student", 

     Item:{ 
      "student_id" : {"N": req.query.student_id}, 
      "name"   : {"S": req.query.name} 
     } 
    } 
    dynamodb.putItem(params, function(err, data) { 
     if(err) 
      console.log(err); 
     else 
      console.log(JSON.stringify(data)); 
    }); 
}); 

これは、get要求として解釈される原因は何でしょうか?どんな助けも大歓迎です。

答えて

2

デフォルトでは、ブラウザからURLがヒットした場合、リクエストはHTTP GETリクエストとして送信されます。プラグインやツールを使わずに直接ブラウザからGETリクエスト以外を送信することはできません。

このPOSTのようなさまざまなHTTPメソッド上で動作RESTサービスをテストするためにPOSTMANまたはFirefoxのプラグインのような他のプラグインのようなツールを使用する主な理由である、PUTなど

1)あなたが打ったとき、私は思いますPOSTMANのURLを入力すると、PUTメソッドが選択されます。

2)POSTMANでGETメソッドを選択すると、同じエラーが発生します。

下記のスクリーンショットを参照してください。 POSTMANからのリクエスト送信で同じエラーが発生します。 POSTMANから

GETリクエスト: - POSTMANから

GET request from POSTMAN

PUT要求: -

PUT request from POSTMAN

要求ブラウザから送信してください -

Request send from browser

私のコードは、あなたがテーブル名を期待するのと同じである: -

app.put('/add-movie', function (req, res) { 
    var params = { 
     TableName:"Movies", 
     Item:{ 
      "yearkey": {"N" : req.query.yearkey}, 
      "title": {"S" : req.query.title} 

     }  
    }; 
    dynamodb.putItem(params, function(err, data) { 
     if(err) { 
      console.log(err); 
      res.send("Put is failed..."); 
     } 
     else { 
      console.log(JSON.stringify(data)); 
      res.send("Put is successful..."); 
     } 

    }); 
}); 
+0

は説明をいただき、ありがとうございます。あなたはあなたが今まで知っていたよりも多くの時間を節約しました。私はもう一つ質問があります。私の割り当ての要件が、PUT関数をテストするためのPythonスクリプトを書くことであれば、どうすればいいのですか?私は挿入されたURLでブラウザにプロンプ​​トを出そうとしていましたが、明らかに動作しません。 – zdevita

+0

PythonにはいくつかのREST APIクライアントライブラリが必要です。 Javaでは、resttemplateクラスのようなスプリングレストクライアントがあります。別の代替方法として、CURLコマンドラインインターフェイスを使用してレストサービスを呼び出す方法があります。 – notionquest

関連する問題