Search code examples
meteoriron-router

Accept post request with iron router


I'm trying to accept a post request from my twilio account to my application to get an xml response back. How do I respond to an incoming post request in iron router? I have read the docs and tried everything in there but I just get (Error: Not implemented on server yet). I have tried putting it on the server, on the client and in lib.:

Router (lib/router.coffee)

Router.route('/api/twilio/voice', where: 'server')
  .post -> console.log 'hey'

Solution

  • This is due to having this.subscribe then .wait()s configured for both server and client. Look for .wait within your Router configuration scopes and make sure it only runs at the client.

    Look at the code part where this happens at the iron-controller repo:

    https://github.com/EventedMind/iron-controller/blob/devel/lib/controller_server.js

    Also I think a better way to debug (instead of console.log) is to actually use this.response:

        Router.route('/api/twilio/voice', { where: server })
          .post(function() {
            this.response.end('hey');
        });
    

    or even the classic format:

        Router.route('/api/twilio/voice', { where: server })
          .post(function(req, res, next) {
            res.end('hey');
        });
    

    Edit: Issue filed here and PR here.