//1.新建了一个文件夹,在文件夹里新建了server.js,在server.js里面去写后端程序.
//2.我们可以通过commonjs的规范去引入nodejs里面的模板
// nodejs编程方式,也就是使用commonjs规范
// 然后其他逻辑使用JS语法去构建就行了
//3.后端启动了吗?怎么启动这个后端程序?
// cmd切盘到项目里面,
// 输入 node server.js启动了程序
//4.测试nodejs程序
//1.http模块 包含了很多东西,包含创建一个服务器createServer()的方法,创建socket方法
var http = require('http');
//包括了http请求里面的url封装的任何对象
//比如我要获取请求地址里面?userId=1009
//post请求一些参数
var url = require('url');
var router=require('./router.js');//载入路由
//2.创建服务器createServer(function(){}) 端口号为3000
http.createServer(function(request,response){
response.writeHead('200',{'Content-Type':'application/json;charset=utf-8',
'Access-Control-Allow-Origin':'*'
});
router(request,response,url);//路由
// //可以通过request.url获取当前的访问地址 端口号后面的地址
// //url.parse() url模块里的方法,能把当前的请求转换成请求对象,可以将当前对象的全部信息获取到
// var _url = request.url;
// console.log(_url);
// var _requestUrl = url.parse(_url); //把当前的请求转换成请求对象,可以将当前对象的全部信息获取到
// console.log(_requestUrl);
// //判断不同的请求,给用户反馈不同的json数据(路由)
// var currentPath = _requestUrl.pathname;//获取请求地址
// switch(currentPath){
// case "/users":
// var users = '{"users":"dong.xie"}';
// response.write(users);
// break;
// case "/goods":
// var goods = '{"goodId":"1009","goodName":"零食","goodPrice":"100"}'
// response.write(goods);
// break;
// case "/query":
// var query = '{"total":"100","result":"[{},{},{}]"}'
// response.write(query);
// break;
// case "/favicon.ico":
// break;
// }
//在创建服务方法里面是有一个回调函数,里面有两个参数request,response,创建的服务到底是做什么的?(给前端做服务)
//前端和后端的交流方式是,前端发出请求,后端接收到之后做出响应
//request,response?
//request主要用来获取前端传送来的信息和数据,接受前端请求.
//response主要是用来响应前端的请求,给前端返回一些数据
//demo1:给前端返回一串json数据
//1.设置http头部 writeHead('http状态值',{http属性})
//对外响应Content-Type数据类型
// response.writeHead('200',{'Content-Type':'application/json;charset=utf-8',
// 'Access-Control-Allow-Origin':'*'
// });
//console.log("浏览器已经开始访问了");
//2.数据返回出去 write(字符串) 主要是对外输出一段数据的方法
//var s='sayHello({"message":"this is my first node app账号aaf"})'; //解决跨域的第一种方法
// var s='{"message":"this is my first node app账号aaf"}';
// response.write(s);
//3.结束响应 释放资源
response.end();
//当输出的格式为中文如何解决?
//在writeHead里面去设置charset=utf-8
}).listen(3000);
console.log("node started");
//第二种方法 解决跨域
//2.跨域的解决 CORS属性 后端直接输出json
//核心就是在后端的http头部里面去设置Access-Control-Allow-Origin属性
//第三种方法
//3.代理服务器 原理和CORS属性一样的
//也就是在nodejs服务器上面去访问另外的跨域请求
//将数据得到,设置Access-Control-Allow-Origin属性就可以解决了
//如何去设计result标准的api 定制一些接口访问url标准
//登录:http://ip:port/user/login
//注册:http://ip:port/user/register
//查询:http://ip:port/user/query
//查询通过ID:http://ip:port/user/queryid
//1.从功能上去设计
//2.从功能贯穿到命名,就是言简意赅,用户一看到api url就知道干什么用的.
//
//引出问题,我们目前设计好的都是没有实现的,将来实现以后,也是前端发请求给后端
//1.后端怎么根据这四个不同的请求,来进行判断
//2.如何在识别了这些不同的请求以后,能给出不同的请求
路由:
/***
* @time:2016-09-07
* @desc:nodejs 路由 后端路由
* 主要的作用是判断浏览器用户发来的不同的请求,并且做出不同的回应
* @auth:StevenYu
*
*/
var router = function(request,response,url){
var _url = request.url;
console.log(_url);
var _requestUrl = url.parse(_url); //把当前的请求转换成请求对象,可以将当前对象的全部信息获取到
console.log(_requestUrl);
//判断不同的请求,给用户反馈不同的json数据(路由)
var currentPath = _requestUrl.pathname;//获取请求地址
switch(currentPath){
case "/users":
var users = '{"users":"dong.xie"}';
response.write(users);
break;
case "/goods":
var goods = '{"goodId":"1009","goodName":"零食","goodPrice":"100"}'
response.write(goods);
break;
case "/query":
var query = '{"total":"100","result":"[{},{},{}]"}'
response.write(query);
break;
case "/favicon.ico":
break;
}
}
module.exports = router;
nodejs-基本使用
最新推荐文章于 2024-08-03 17:05:14 发布