2014-09-21 55 views
0

我正在使用npm "twit",它最終發佈Twitter狀態更新。我讓用戶填寫表單,表單的操作是對home/tweet/這樣的路徑的發佈請求。提交表單操作發佈API,我需要郵政路由嗎?

在我的快遞路由器中,我有一個路由home/tweet/。雖然表單數據並沒有真正發佈到那裏,但我這樣做的原因是因爲我正在提取表單字段qith req.body,然後在路由器內向Twitter發送發佈請求以創建新的推文。下面是它的樣子:

router.post("/tweet/", function(req,res){ 
    var tweet = req.body.tweet; 
    Twitter.post('statuses/update', { status: myFuncs.encode(myFuncs.key, tweet) }, function(err, data, response) { 

    }); 
    res.redirect('/'); 
}) 

即使這個工程,它感覺有點哈克我。有沒有更好的方法來設計這個?有沒有更好的方法來提取表單字段,而不使用req.body的發佈請求,或使用req.query的獲取請求?

+1

如果我理解正確,您希望自己的代碼看起來像用戶通過表單發送推文時,推文會直接發送到Twitter?我在問,因爲我想我有一個答案,但我可能會回答錯誤的問題。 – 2014-09-21 16:51:42

+0

是的,目前「發佈」路線不在任何地方發佈數據。它或多或少地從req.body中獲取數據。然後在抓取數據後發佈到twitter。對我來說,這看起來有點不可靠,我覺得我應該能夠直接發佈到twitter,而不必爲了獲取用戶req.body而創建額外的發佈請求路由。 – HelloWorld 2014-09-21 20:17:32

+0

我看到它背後的好處,因爲這會阻止額外往返(客戶端到服務器,然後服務器到Twitter,然後返回),但似乎Twitter沒有啓用[CORS](http://en.wikipedia。 org/wiki/Cross-origin_resource_sharing)。 – 2014-09-21 21:22:11

回答

1

雖然,我同意,這似乎是「哈克」 ---因爲你把它 - 但不幸的是,因爲Twitter已經不是其API啓用CORS,你別無選擇使用的媒介,例如作爲你的服務器。或者,您可以使用第三方服務,但該仍然是一箇中介,就像您的服務器。