节点JS通过URL发送数据

时间:2015-04-16 11:28:42

标签: javascript php node.js http

最近我开始用Node JS编程,发现它是php的一个惊人的替代品。在php中,我曾经在网址中发送带有数据的请求。

类似于:http://sample.com/public.php?x=helloworld

如何在Node JS中执行类似的操作,或者有更好的方法将数据发送到节点,这与上面使用的url不同。

此外,我注意到在某些情况下,例如stackoverflow,查询是不同的,不包括文件名

喜欢/ public?=而不是/public.php?=

这是如何实现的,我一直以为这是与REST相关的东西。此外,如果您有答案,您可以指导我,如果可以使用Node完成,并且一些要学习的资源也可以提供帮助。

2 个答案:

答案 0 :(得分:1)

使用预先存在的模块作为您的网络服务器可能会好得多。您可以手动设置一个,但您必须了解很多潜在的边缘情况并且真正了解Web服务器。节点中的大多数人使用express。在节点中,与任何服务器端语言一样,您可以通过几种方式传递数据。查询字符串是一个。您还可以将一些参数直接放在网址中(例如" / users / 12"其中12是用户ID)。根据请求的类型,您可以将数据放在请求的正文中。您也可以传递cookie。这些不是特定于节点的。解释像这样的帖子中的express如何工作会很疯狂,所以我只给你一个简短的例子来说明一个匹配你的示例路由的路由处理程序可能是这样的:

var express = require('express');
var app = express();

app.get('/public', function(req, res, next) {
  // Get the value from the query string. Express makes the query
  // available as an object on the request parameter.
  var x = req.query.x;

  // Execute your main logic
  doSomethingWithX(x);

  // Send a response
  res.status(200).json({ foo: 'bar' });
});

答案 1 :(得分:1)

使用REST api的最常规方式

req.query

// GET /search?q=foo+bar  
req.query.q  
// => "foo bar"  

// GET /phone?order=desc&phone[color]=black&shoe[type]=apple  
req.query.order  
// => "desc"  

req.query.phone.color  
// => "black"  

req.params

// GET /user/william  
req.params.name  
// => "william" 

req.body(表单数据)

// POST /login
req.body.username
// => "william"
req.body.password
// => "xxxxxx"