node基础11:接受参数
1.接收参数
在Node中接受GET/POST请求的参数不像PHP那样,在PHP中直接有全局变量$_GET,$_POST来接受url,或者请求体重的参数。
在node中接受GET参数使用url.parse(req.url, true).query可以获取请求参数,使用queryString.parse(data)来从请求体中来获取字段。
- // server.js
- var http = require("http");
- var url = require('url');
- var router = require('./router');
- http.createServer(function(req, res){
- if ( req.url !== '/favicon.ico'){
- pathname = url.parse(req.url).pathname.replace(/\//,'');
- console.log(pathname);
- try {
- router[pathname](req, res);
- } catch(e) {
- console.log('error:'+e);
- res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
- res.write(e.toString());
- res.end();
- };
- }
- }).listen(3000);
- console.log("server running at http:127.0.0.1:3000");
- /**
- * router.js
- */
- var fs = require('fs');
- var url = require('url');
- var querystring = require('querystring'); //post需要导入
- module.exports = {
- login: function(req, res){
- /***** GET 为同步获取参数 ***/
- /* GET接受参数
- var rdata = url.parse(req.url, true).query;
- console.log(rdata);
- if (rdata['email']!=undefined) {
- console.log(rdata['email']);
- }
- */
- /***** GET 为同步获取参数 ***/
- /**************POST***********异步*********************/
- var post ='';
- req.on('data', function(chunk){
- post += chunk;
- });
- req.on('end', function(){
- post = querystring.parse(post);
- console.log('收到参数:'+post['username']); //因为这里是异步,所以不能使用 res.write();
- console.log('收到参数:'+post['password']);
- //console.log('收到参数:'+post); // Cannot convert object to primitive value
- // *** 这里会报错哟!!!! ***
- fs.readFile('./login.html', function(err, data){
- if( err){
- console.log(err);
- res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
- res.write(err.toString());
- res.end();
- } else {
- res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
- res.write(data);
- res.end();
- }
- })
- })
- /*************************异步*********************/
- },
- register:function(req, res){
- fs.readFile('.register.html', function(err, data){
- if(err) {
- console.log(err);
- res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
- res.write(err.toString());
- res.end();
- return;
- } else{
- res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
- res.write(data);
- res.end();
- }
- })
- },
- showImage:function(req, res){
- fs.readFile('./test.png',function(err, data){
- if (err) {
- console.log(err);
- return;
- } else{
- console.log("开始读取图片");
- res.writeHead(200, {'Content-Type':'image/jpeg'});
- res.write(data);
- res.end();//写在互调函数外面会报错的哟
- }
- })
- }
- }
node基础11:接受参数的更多相关文章
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- java基础(11) -JDBC
java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...
- node基础篇二:模块、路由、全局变量课堂(持续)
今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...
- Node.js express获取参数有三种方法
express获取参数有三种方法:官网介绍如下 Checks route params (req.params), ex: /user/:id Checks query string params ( ...
- 十一. Python基础(11)—补充: 作用域 & 装饰器
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...
- node基础-文件系统-文件写操作
文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- node基础(一)——http模块
一.http模块 http.createSverver() http是node自带的模块,通过require("http")的方法载入: 使用http创建服务器: http.cre ...
随机推荐
- 使用C#类向数据库添加数据的例子源码
在上一篇中,增加了sql server数据库操作类SqlOperator,用于操作sql server数据库.还有一个SqlStringHelper类,用于处理sql语句的单引号.那么这两个类怎么使用 ...
- jquery右键菜单
点击这里体验效果 如果要屏蔽页面原来的右键菜单,请设置disable_native_context_menu:true 以下是源代码: <!DOCTYPE html> <html&g ...
- js 理解new的运行机制
先上段代码: function People(name) { this.name = name; } People.prototype.sayName = function () { console. ...
- ASP.NET MVC之路由深究
MVC的强大之处之一当然是路由,这是几年前一位牛人给我说过的话,本人深感认同.今天就再次探究. 首先新建一个空的MVC项目,我们会发现在RouteConfig类中存在一个默认的路由配置,通常我会在这里 ...
- .NET项目集成VS混淆加密
在微软.NET体系下开发软件难免遇到加密类库的需要,从商业的角度出发,使用像Xenocode .NET.Dotfuscator专业版等混淆器肯定是最好的选择, 作为一般小项目,我倒是觉得简单.易用达到 ...
- Inplace Search on document libraries and lists is not working
[http://sharepointfarmer.com/inplace-search-on-document-libraries-and-lists-is-not-working/] I ran i ...
- Android内存泄漏
Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的 ...
- WWDC 后苹果最新 App Store 审核条款!
WWDC 2016 大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS 和 tvOS.并且在此之后,苹果应用商店审核条款也同时进行了更新——貌似不算进行了更新,简直就是重 ...
- h5滑动方向、手机拖动层
做h5时需对手指滑动方向判断及拖动浮动层,本文代码适用于手机端h5页面,pc页面可使用onMouseDown.onMouseUp.onMouseMove.(本方法仅为功能实现原理和演示,可根据自己的需 ...
- border 外边框
语法: border:<line-width> || <line-style> || <color> <line-width> = <length ...