3

node + express + IronMQで遊んでいますが、少し問題が発生しています。

express.js POSTコールバックでは、リクエストの本文として{}を取得していますが、メッセージの内容がIronMQメッセージキューからプッシュされていると確信しています。

ヒントはありますか?

4

2 に答える 2

2

わかりました。問題の理由とその解決策の両方を見つけました。だから私自身の質問に答えるために:

問題:


1)IronMQプッシュキュー(http://dev.iron.io/mq/reference/push_queues/)からPOSTメッセージを受信して​​います。そのコンテンツタイプはtext/plainです。

2)connect.jsミドルウェア(express.connect)を使用しており、application / json、application / x-www-form-urlencoded、およびmultipart/form-dataのみを解析します。 http://www.senchalabs.org/connect/bodyParser.html

したがって、本文は解析され、そのコンテンツタイプはサポートされていないため、結果は{}になります。

解決:

text / plainリクエストの本文を取得するには、 https: //stackoverflow.com/a/9920700のように自分で解析する必要がありました。

于 2013-01-24T00:33:47.977 に答える
1

IronMQは、カスタムヘッダーを送信するようにプッシュキューを更新しました。キューの作成時にサブスクライバーのリストでヘッダーを「Content-Type」:「application / json」に設定すると、本文が正しく解析されます。例えば

# update groups queue
payload =
  subscribers: [
    {
      url: "#{process.env.ROOT_URL}/groups/update"
      headers:
        'Content-Type': 'application/json' # this fixes request parsing issue
    }
  ]
  push_type: 'multicast'
  retries: 3
  retries_delay: 10
  error_queue: 'groups_errors'

url = "https://mq-aws-us-east-1.iron.io/1/projects/#{process.env.IRON_MQ_PROJECT_ID}/queues/groups"

headers =
  'Authorization': "OAuth #{process.env.IRON_MQ_TOKEN}"
  'Content-Type': 'application/json'

result = HTTP.post url, {headers: headers, content: JSON.stringify(payload)}

これがgithubの関連する変更です

于 2014-03-06T00:51:49.543 に答える