学习使用MEAN开发RESTful WEB api,实现数据的CRUD

800?"800px":this.width);
max-height:800px;
height:expression_r(this.height>800?"800px":this.height);
}
-->

MEAN


M=MongoDB


非关系型数据库


E=Express


Node中的web开发模块


A=Angular.js


Google的javascript开发框架


N=Node.js


javascript的服务端运行环境

下面通过youtube上的一个教程来学习使用MEAN来做一个list的CRUD。

1、安装node.js

至http://nodejs.org下载相应版本,本文用的是for Mac OSX 10.10的版本

安装完成后,在终端中验证node的版本和npm(node的包管理器的版本),以确定命令能够运行,安装成功

2、安装文本编辑器sublime Text 3

3、在桌面上新建一个文件夹contactlistapp,作为项目文件的存储目录。并在目录中新建一个 server.js文件作为项目程序的入口文件。

4、为项目安装Express

在终端中cd进入contactlistapp目录,执行命令  npm install express,如下图所示表示已经完成Express的安装。

在contactlistapp目录中会出现存储着模块的文件夹。

5、编写一个最简单的node web服务器,并运行

在server.js文件中,键入以下代码:

var express=require(‘express‘);         //引用express模块

var app=express();               //创建一个express实例

app.get(‘/‘,function (req,res){           //服务器响应对根路径的get请求

res.send("Hello World from server.js");     //向客户端发送一条文本

});

app.listen(3000);               //指定程序监听在3000端口

console.log("Server running on port 3000");  //在服务器的窗口中打印一行文本

在终端中通过node server命令来启动web服务器,server.js中的代码即可被执行,并打印出信息

在浏览器中访问http://localhost:3000  得到下图 结果,说明web服务运行成功。

6、为项目增加静态文件存储目录

在项目文件夹根目录建立public文件夹

在server.js中增加代码:

app.use(express.static(__dirname+"/public"));  //告诉node服务器,静态文件位于哪里

在public文件夹中新建index.html,

编辑内容如图:

通过浏览器访问localhost:3000,服务器找到静态文件夹下index.html

7、为项目添加bootstrap的css文件

下载bootstrap包,将其中的css文件夹下的bootstrap.min.css和bootstrap-theme.min.css两个文件拷贝到public文件夹下的css文件夹中,并引用到index.html中使用

浏览器访问添加了bootstrap样式的首页,放入bootstrap container样式中的文字显示样式变更,代表引入成功

8、在项目中添加angular.js

下载angular.js文件(1.2版),并放入public/js文件夹下

在body标签的末尾添加对angular的引用,在html标签中添加ng-app,使用angular。

在页面中增加一个使用ng-model的输入框,变量为test,并将test的内容输出到首页上的一串文本,随着输入框的变化而变化。

 

9、编写业务控制器

在public下新建controllers文件夹用于存放业务逻辑控制器,在controllers中新建文件controller.js

在其中添加代码如下。并在index.html中添加对该controller.js的引用。在div块中,添加ng-controller=AppCtrl,指向controller.js中的业务处理函数。

浏览器刷新首页,在chrome的开发者工具中查看打印在console中的日志

10、为应用添加静态数据并显示

在controller.js中增加静态数据:

在index.html中的表格中显示,通过np-repeat来控制循环读取数据

刷新localhost:3000,联系人数据在页面上显示

11、将静态数据放到服务器,让angular控制器通过http get请求获取数据

修改controller.js的代码如下:

向服务器发送一个get请求,请求/contactlist,成功后将获得的response数据绑定到angular的scope.contactlist

修改server.js代码如下:

编写响应对/contactlist的get请求,并将静态数据转化成json返回给用户

修改server.js必须重启服务:node server

浏览器端执行结果如下,数据是从服务端返回的:

12、安装并运行mongoDB

下载mongoDB的2.6版本

将mongoDB包解压到/usr/local/mongodb下,并在mongodb目录下新建data和log两个文件夹

在终端中运行mongoDB:

指定mongodb服务运行的端口、数据文件、日志文件存放的目录  --fork参数使其在后台运行

13、连接mongodb数据库,并向contactlist数据库中插入数据

连接mongodb,并使用contactlist数据库:

插入一条数据:

插入多条数据:

14、使应用连接mongodb数据库

安装mongojs模块  npm   install  mongojs

安装完成后,使用npm list查看本项目中已安装的模块

在server.js中增加mongojs的引用

var mongojs=require(‘mongojs‘);

var db=mongojs(‘localhost:30000/contactlist‘,[‘contactlist‘]);//第一个参数是连接字符串形如  [username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database],第二个参数是会使用到的collections的集合。

通过操作获取数据并转换成json

db.contactlist.find(function(err,docs){

  console.log(docs);

  res.json(docs);

});

重启服务

chrome中查看到已获取到新的数据

15、为web上的数据表格增加控件,以输入数据

在index.html中新增代码如下图

显示效果:

16、响应Add Contact的点击事件

安装body-parser

在addContact处理函数中,增加对http的post请求到/contactlist,并将$scope.contact作为参数传给server端

server端处理到/contactlist的post请求,并将contact数据写入MongoDB,并将结果返回给controller.js

通过表单控件插入一条contact,可以看到浏览器和服务端的console都成功打印了数据,插入前不含_id,插入mongoDB后自动获得了_id

17、为addContact按钮增加刷新功能,使数据增加到数据库后,能即时显示到web的表格中

修改controller.js中的$http.get请求代码,将其装入一个refresh函数,并在成功提交get请求后将文本框清空。

每次点击后,先执行get请求获取数据库中数据,再执行post请求将文本框中的数据提交到mongodb,成功返回后再次执行refresh,get回所有数据。

18、增加数据删除功能

web上每行数据增加一个删除按钮,将数据绑定时的id值传递给controller.js中的remove函数

controller.js中编写remove函数,将点击删除按钮后对应数据的id值打印出来,并向服务器发送delete请求,请求删除该id的数据,成功返回后调用refresh函数重新加载数据表。

server.js中编写delete请求处理逻辑,将请求路由中的id值取出,并打印出来,再将id值通过mongojs转换成mongodb的id对象,将其数据删除。

web界面效果:

19、增加数据修改功能

在界面上新增Edit和Update按钮

在controller.js中编写edit和update的处理逻辑。edit接收传入的id值,执行get请求,请求单个contact,并将取回的结果放入到文本框中去。

update执行put请求,将文本框中修改过的内容传给服务器端进行写库操作。成功返回后,refresh表格。

服务器端代码:

20、此时完成的代码有一个bug,如果edit一个记录,再add contact,会发现新增的记录无法remove和edit。这是因为数据库中_id的原因。

现在新增一个clear按钮修正这个bug(权宜之计)。点击clear,在前端进行处理,将文本框都清空

下载源码包

时间: 2024-08-03 03:34:55

学习使用MEAN开发RESTful WEB api,实现数据的CRUD的相关文章

RESTful Web API Help Documentation using Swagger UI and Swashbuckle

Sign in home articles Chapters and Sections> Search Latest Articles Latest Tips/Tricks Top Articles Beginner Articles Technical Blogs Posting/Update Guidelines Article Help Forum Article Competition  Submit an article or tip  Post your Blog quick ans

对RESTful Web API的理解与设计思路

距离上一篇关于Web API的文章(如何实现RESTful Web API的身份验证)有好些时间了,在那篇文章中提到的方法是非常简单而有效的,我在实际的项目中就这么用了,代码经过一段时间的磨合,已经很稳定了,所以我打算写篇总结,并在最近这段时间里提供一个ASP.net Web API的综合例子. 对四个HTTP方法的理解 众所周知,HTTP有四个方法,GET.POST.PUT和DELETE,分别对应数据库的SELECT.INSERT.UPDATE和DELETE,一般的教程说到这里也就Over了,

Html网页使用jQuery传递参数并获取Web API的数据

昨天Insus.NET有开始学习Web API,<ASP.NET MVC的Web Api的实练>http://www.cnblogs.com/insus/p/4334316.html .其中演练中有提及到出现异常并解决,也有举例实现了在html静态网页使用jQuery来去读Web API的数据. 本篇想实现在html网页使用jQuery实现向Web API传递参数并获取数据. 在API创建一个方法public IEnumerable<Order> GetOrderByOrderNu

传递多个参数并获取Web API的数据

近段时间学习Web Api觉得非常有意思.默认的路由情况之下,获取数据时,它不必指定Action操作名. 还有另外感想,就是自从学习asp.net MVC之后,加上jQuery,让Insus.NET已经慢慢远离开ASP.NET,想起了那曾经得心应手的Web控件...... 前两篇<ASP.NET MVC的Web Api的实练>http://www.cnblogs.com/insus/p/4334316.html 没有带参数获取数据.而这篇<Html网页使用jQuery传递参数并获取Web

使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo

在上一篇里,我已经建立了一个简单的Web-Demo应用程序.这一篇将记录将此Demo程序改造成一个Web Api应用程序. 一.添加ASP.NET Core MVC包 1. 在project.json文件添加Microsoft.AspNetCore.Mvc包 1 { 2 "version": "1.0.0-*", 3 "buildOptions": { 4 "debugType": "portable",

用Jersey为Android客户端开发Restful Web Service

平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关注相对较少,但是如果我们要自己一个人设计并开发一套完整的系统,我们就必须同时具备客户端和服务端的开发知识,而且我认为同时掌握客户端和服务端的开发技术还是很有用处的,不仅有助于提升我们的架构知识和能力,而且还……你懂得!身边一些做WEB开发的朋友很多都说为客户端开发接口和单纯地做WEB项目并没有很大的

使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件

作者:Sreekanth Mothukuru 2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 API 用户提供丰富的探索.文件和操作体验. 源代码: 下载 SwaggerUi_2.zip 步骤 在本文中,我们将在 Asp.Net 创建一个简单的 Restful API,并整合 Swashbuckle 和 Swagger UI.本文分为三部分. 创建 Asp.Net Web API项目 通过实体数

我所理解的RESTful Web API [Web标准篇]

REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一代Web服务(或者Web API)的架构风格.由于REST仅仅是一种价格风格,所以它是与具体的技术平台无关的,也就是说采用REST架构的应用未必一定建立在Web之上,所以在正式介绍REST之前,我们先来简单认识一下Web. 目录 一.TCP/IP与HTTP 二.Web资源       媒体类型   

cxf开发Restful Web Services

一.restful web services rest全称是Representation State Transfer(表述性状态转移).它是一种软件架构风格,只是提供了一组设计原则和约束条件.在restful web services的设计原则中,所有的事物都应该拥有唯一的URI,通过对URI的请求访问,完成相应的操作.访问的方法与http协议中的若干方法相对应.如下: 创建资源,使用 POST 方法. 获取某个资源,使用 GET 方法. 对资源进行更新,使用 PUT 方法. 删除某个资源,使