Node: js在服务端的一个运行环境

node框架:express  koa  egg (本文采用express)

express: 是基于node的一个web框架

restful api:是目前流行的api设计规范,用于web数据接口设计

特点:动词+宾语

请求方式:Get,   地址: /api/articles

步骤:

1.安装node,安装后就有npm

2.生成依赖包管理文件,命令npm init -y 在项目的根目录(package.json)

3.下载依赖包, npm install -S express

4.启动服务:node xxx.js

参数传递:

get:适合查询方式,参数较少

1. 前端 :通过 http://192.168.0.111:8080?key=value传参数

后端(node):通过 request.query.key 取参数

参数在【Query  string】

2. 通过尾部拼接传参: http://192.168.0.11:3000/info/value  value即参数

后端取参数:request.params.key

post:  在跨域的时候发送两次请求(第一次试探性,第二次真实的请求)

1.发送json格式的参数

参数在【request payload】

node中接收参数采用: request.body

2.表单格式 key = value

参数在【from data】

jq默认使用【from data】发送数据

jq使用以下方式发送json数据    contentType:“appliction/json”,  data:JSON.stringify({name:'tony",age:20}),

node中接收参数采用: request.body

eg:后端 (node)xxx.js文件

  1. var express = require('express');//加载包
  2. var bodyParse = require("body-parser"); //处理参数
  3. var app = express();
  4.  
  5. // 处理跨域问题
  6. var allowCrossDomain = function(req,res,next){
  7. res.header("Access-Control-Allow-Origin","*"); // 允许的请求源 从哪里来
  8. res.header("Access-Control-Allow-Headers","*"); // 允许的请求头
  9. res.header("Access-Control-Allow-Methods","*"); // 允许的请求方法 get post put
  10. next(); // 下一步
  11. }
  12. app.use(allowCrossDomain);
  13.  
  14. // 添加参数
  15. app.use(bodyParse.json()) //处理json数据0
  16. app.use(bodyParse.urlencoded({extended:true})) // 处理表单数据或者url
  17.  
  18. // 第一个接口
  19. app.get('/',function(request,response){ // 定义一个Get请求 地址:/
  20. response.send("my web serve"); // 发送信息
  21. })
  22.  
  23. // 第二个接口 ?形式
  24. app.get("/info",function(request,response){
  25. // 拿到?后面的参数 request,query.name
  26. console.log(request.query.name)
  27. var data = {
  28. code:"200",
  29. msg:"success",
  30. request:"XXXXXXXX"
  31. }
  32. response.send(JSON.stringify(data))
  33. })
  34.  
  35. // 第三个接口 格式: 参数名
  36. app.get("/info/:name",function(request,response){
  37. // :参数名 res.params.name
  38. console.log(request.params.name)
  39. var data = {
  40. code:"200",
  41. msg:"success",
  42. request:"XXXXXXXX"
  43. }
  44. response.send(JSON.stringify(data))
  45. })
  46.  
  47. // 第四个接口 格式: 参数名
  48. app.post("/info4",function(request,response){
  49. // :参数名 res.params.name
  50. console.log(request.body)
  51. var data = {
  52. code:"200",
  53. msg:"success",
  54. request:"XXXXXXXX"
  55. }
  56. response.send(JSON.stringify(data))
  57. })
  58.  
  59. // 监听3000端口
  60. app.listen(3000,function(){
  61. console.log("服务已启动,端口3000"); // 服务启动完成时的日志
  62. })

eg:前端页面

  1. function getXMLHttpRequest(){
  2. var xmlhttp; //ajax
  3. if(window.ActiveXObject){ //判断是否有此对象
  4. // ie5 ie6
  5. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  6. }else if(window.XMLHttpRequest){ //判断是否有此对象
  7. // ie7+ ff chrome 浏览器原生
  8. xmlhttp = new XMLHttpRequest();
  9. }else {
  10. xmlhttp = null;
  11. }
  12. return xmlhttp
  13. }
  14. function getData(){
  15. var xmlhttp = getXMLHttpRequest();
  16. // true异步 false同步
  17. // get 方法请求
  18. // xmlhttp.open('get','http://localhost:3000',true); // 无参数
  19. // xmlhttp.open('get','http://localhost:3000/info?name=lisi',true); // 参数以?的形式拼接
  20. // xmlhttp.open('get','http://localhost:3000/info/tom',true); // 参数直接拼接
  21. // xmlhttp.send();//发送请求
  22.  
  23. // post 方法请求
  24. xmlhttp.open('post','http://localhost:3000/info4',true);
  25. //json
  26. // 指定内容类型
  27. xmlhttp.setRequestHeader("Content-Type","appliaction/json");
  28. xmlhttp.send(JSON.stringify({"name":"jonu","age":20}));
  29. xmlhttp.onreadystatechange = function(){
  30. //200 请求成功
  31. if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
  32. console.log(xmlhttp.responseText);
  33. }
  34. }
  35. }
  36. getData()

node.js 数据模拟的更多相关文章

  1. 十个书写Node.js REST API的最佳实践(下)

    收录待用,修改转载已取得腾讯云授权 5. 对你的Node.js REST API进行黑盒测试 测试你的REST API最好的方法之一就是把它们当成黑盒对待. 黑盒测试是一种测试方法,通过这种方法无需知 ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

  4. Node.js:进程、子进程与cluster多核处理模块

    1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...

  5. Node.js:理解stream

    Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据.流模块便是提供各种API让我们可以很简单的使用Stream. 流分为四种类 ...

  6. Node.js:Buffer浅谈

    Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...

  7. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  8. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  9. Node.js入门(一)

    一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...

  10. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

随机推荐

  1. insert image in mail instead of attachment

    https://www.extendoffice.com/documents/outlook/3810-outlook-insert-images-inline.html Go ahead to cl ...

  2. WPF textbox实现单击全选

  3. PTA-R7-1 圆形体体积计算器

    ​R7-1 圆形体体积计算器 分数 20 全屏浏览题目 切换布局 作者 张高燕 单位 浙江大学 本题要求实现一个常用圆形体体积的计算器.计算公式如下: 球体体积 V=4​π*r3/3,其中r是球体半径 ...

  4. Vue 的生命周期 详细解析(使用场景等)

    Vue生命周期图: 一.生命周期图的解读 new Vue():首先需要创建一个 Vue的实例对象 Init Events & Lifecycle :初始化:生命周期.事件(如:v-once), ...

  5. mybatis查询返回多条数据

    返回User类型的list <select id="queryAllUser" resultType="org.example.entity.User"& ...

  6. JAVASCRIPT 对有符号整型、无符号整型、浮点型、十六进制、二进制的数据处理

    1.十六进制字符串转有符号整型,支持S8.S16.S32: function hexToInt(hex) { if(hex.length % 2 != 0) { hex = "0" ...

  7. iis express添加网站,并启动

    1.查看网站列表 C:\Program Files (x86)\Microsoft Visual Studio 12.0>"C:\Program Files\IIS Express\a ...

  8. 【SQL Server】存储过程带参数输出——output

    在SQL Server 中,如果要用一个存储过程返回字符串应该怎么做?用output参数. 错误方式 接下来,展示一下,常见的错误方法 CREATE PROCEDURE testString AS B ...

  9. Qt的QString转换问题

    之前是写C#的,涉及类型转换要么是强转,类似(String)这样,要么是用Converter提供的转换方法,但是今天开发qt界面的时候,使用(QString)强转int类型的时候出现了乱码: 后来研究 ...

  10. Unity 设计模式-简单工厂模式和其他好用的通用代码块

    1. 2.加法操作类 using System.Collections; using System.Collections.Generic; using UnityEngine; //加法操作类 pu ...