私は、単にトークンをPOSTバックする自動サブスクリプションAPIを構築しようとしています。私はSinatraでこれを非常に簡単に行うことができます(POSTされたJSONをAWSからレンダリングする) - Expressでは苦労しているようです。私は1000Xの組み合わせを試しましたが、それはちょうど私が行方不明だと思っています。AWS SNS webserviceサブスクリプション - 明示的な問題、sinatraの例
# application.rb
require 'rubygems'
require 'sinatra'
require 'json'
set :port, 8081
post '/webservice/cloudwatch' do
content_type :json
puts "Body: " + request.body.read
end
記録します:ここで
- -> /webservice/cloudwatch
Body: {
"Type" : "SubscriptionConfirmation",
"MessageId" : "OMIT",
"Token" : "OMIT",
"TopicArn" : "OMIT",
"Message" : "OMIT",
"SubscribeURL" : "OMIT",
"Timestamp" : "2012-02-28T21:28:02.082Z",
"SignatureVersion" : "1",
"Signature" : "OMIT",
"SigningCertURL" : "OMIT"
}
をExpressのWebサーバである:
var express, app, stache;
express = require("express"), app = express.createServer();
app.configure(function() {
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(app.router);
app.set("view options", {
layout: false
});
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
app.post("/webservice/cloudwatch", function (request, response) {
request.accepts('application/json');
console.log("post body: " + JSON.stringify(request.params));
console.log("post body: " + JSON.stringify(request.body.read));
});
app.listen(8081);
ログに記録します。
post body: []
post body: undefined
をここで
はシナトラのWebサーバであります
助けてください!
代わりのrequest.body.read' 'に' console.log'をやっrequest.body' 'に' console.dir'をやってみてください:へ
おかげでログインrequest.rawbodyをお試しくださいそれに含まれる属性を確認してください。 – Marshall
console.dir(request.body);このログ{} –
console.dir(request.body.read);このログは未定義です –