文档章节

我的物联网综合知识之创建服务端1

昌伟兄
 昌伟兄
发布于 2017/03/02 22:50
字数 1647
阅读 27
收藏 0

这一部分,我们先来学习创建服务端的基本知识,下一部分,将给出实际用到的服务端代码及其分析。
我们使用Node.js来创建服务端。

Node.js是运行在服务端的JavaScript,它是一个基于Chrome JavaScript运行时建立的一个平台,是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,执行JavaScript的速度非常快,性能非常好。

Node.js安装

在Ubuntu等linux系统中,安装非常简单。在命令行终端中直接执行下面的安装命令就可以了。
sudo apt-get install nodejs
安装完成后,可以查看一下当前的Node版本:
node -v

Node.js入门程序

我们用Node.js编写一个Hello World程序,执行下面的命令:
nano hello.js
在打开的编辑器中输入下面的代码:

var http=require('http');  //引入http模块
http.createServer(function(request,response){   //创建服务器
   response.writeHead(200,{'Content-Type':'text/plain'}); //发送http头部,http状态值和内容类型
   response.end('Hello World'); //发送响应数据
}).listen(8000);//绑定监听端口
console.log('Server running at http://127.0.0.1:8000');  //终端打印

编辑完成后,按Ctrl+x,按y保存。在命令行终端中,执行:
node hello.js
然后,打开一个浏览器,在地址栏中输入:
http://127.0.0.1:8000
我们可以看到浏览器显示出Hello World。但是,这个程序只是完成了一个可以工作的http服务器,其它什么也没有做。

使用Express模块

Node.js自身虽然提供了很多模块,如http,tcp等,但如果直接使用这些基本的模块来开发应用需要花费大量的时间,因此,我们就要使用一些别的模块来提高开发效率,同时使得代码更简洁。express就是与http对应的第三方核心模块,用于处理http请求。
Express是一个简洁灵活的Node.js Web应用开发框架,它可以帮助我们创建各种Web应用。我们就使用Express作为HTTP协议的基础框架。

安装Express模块

前提是已经正确安装了Node.js。在命令行终端中执行:
npm install express
这里我们用到了npm,下面我们要了解一下有关npm的知识。

关于npm

npm(Node Package Manager)是随同Node.js一同安装的包管理工具,它能解决Node.js代码部署上的很多问题,常见的应用场景如下:

允许用户从NPM服务器上下载别人编写的第三方包到本地用
允许用户从NPM服务器上下载并安装别人编写的命令行程序
允许用户将自己编写的包或命令行程序上传到NPM服务器上

使用下面的命令测试是否成功安装:
npm -v
使用npm命令安装模块:
npm install <Module Name>
这是本地安装,将安装包放在了./node_modules目录中(运行npm命令所在的目录,可通过require引入本地安装的包)
npm install <Module Name> -g
这是全局安装,将安装包放在了/usr/local下或你的node安装目录中,可以直接在命令行中使用。

注意:安装node模块时,如果指定了--save参数,则此模块将被添加到package.json文件中的dependencies列表中。以后发布到网上时,不需要将node_modules文件夹发布,程序会根据package.json文件中的依赖列表中模块名字及版本号,自动从网上下载安装。

其它一些npm相关命令

查看所有全局安装的模块:npm ls -g
卸载模块:npm uninstall <Module Name>
更新模块:npm update <Module Name>
搜索模块:npm search <Module Name>

用npm命令npm ini可以生成package.json文件,包含基本结果。当然,package.json文件也可以自己手动创建,根据实际项目的需要,列出需要依赖的模块,然后通过$npm install命令安装这些模块。

在服务端,我们要创建一些路由,以供客户端访问。

Express路由

路由(routing)是由一个URI(或叫路径)和一个特定的http方法(如GET、PUT)组成。涉及到应用如何响应客户端对某个网站节点的访问。
路由的结构是:app.METHOD(PATH,HANDLER), 其中app是一个express实例,METHOD是某个http请求方式中的一种(如GET、PUT、POST、DELETE),PATH是服务器端的路径,HANDLER是当路由匹配到时执行的函数。
例子:创建一个app.js文件:

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

app.get('/api',function(req,res){
   res.send({led:false});
});
app.post('/api',function(req,res){
   res.send({led:false});
});
app.put('/api',function(req,res){
   res.send({led:false});
});
app.delete('/api',function(req,res){
   res.send({led:false});
});
app.listen(8000);

然后,启动这个http服务,并进行测试:
node app.js
测试方法:
对于GET方法,可以在浏览器地址栏中输http://127.0.0.1:8000/api,回车后看到结果,或者在命令行终端窗口中,输入curl http://127.0.0.1:8081/api
对于POST、PUT和DELETE方法,均可用curl命令来测试。
curl -X POST[PUT][DELETE] -d '{"led":true}' -H "Content-Type:application/json" http://127.0.0.1:8000/api
意思是将一个数据为{led:true}、头为Content-Type:application/json的POST请求发送给服务器,代码中用req.body.led获取传过去的led值。
其中,-X 指定http的请求方式
-d 传送的数据
-H 自定义头信息传递给服务器

我们创建的路由遵循REST API规范。

关于REST API

REST(Representational State Transfer)即表征性状态传输,它是为了描述现代Web如何工作而提出的,它是一种设计风格,不是一种标准。受用户欢迎的网站,绝大多数都采用了这种风格的设计。REST依赖于HTTP协议的功能,使客户端和服务端的交互需要遵守特定的协议(或者说是规范)。如,GET方法用来获取(读取)资源,POST方法用来创建资源,PUT方法用来更新资源,DELETE方法用来删除资源。
设计RESTful API的关键是设计好URI,即指定资源间的关系。资源也就是数据,即可以存储到计算机中的事物。通常要遵循一些默认的规则:使用斜杠(/)来区分资源间的关系等。

另外,需要说明,Node服务端与数据库交互,我们使用mongoose模块。
安装mongoose:
npm install mongoose

以上内容参考了黄峰达的《自己动手设计物联网》相关内容以及网上资源,在此深表感谢!

© 著作权归作者所有

昌伟兄
粉丝 14
博文 12
码字总数 11956
作品 0
楚雄
后端工程师
私信 提问
Easy IoT微信小程序上线,物联网链接缩短到3步

Easy IoT微信小程序来了!开启未来生活 可在微信端添加设备、监测数据。 Easy IoT是什么 Easy IoT是一个国际化物联网服务平台 http://iot.dfrobot.com.cn/,可以对联网的传感器/执行器数据进...

DFRobot_露娜
2018/07/30
4
0
中国物联网产业应用联盟即将发起成立,目标帮助5000家系统集成商应用落地

中国物联网产业应用联盟是一个将由一百多家物联网行业优秀的芯片企业、传感器企业、无线通讯企业、物联网智能终端企业、云平台企业、系统集成商和行业用户自愿参与发起的一个紧密合作的联盟组...

玄学酱
2018/04/19
0
0
Easy IoT微信小程序上线 开启未来生活

Easy IoT简介 Easy IoT是一个国际化物联网服务平台 http://iot.dfrobot.com.cn/,可以对联网的传感器/执行器数据进行实时监控和反馈,统计和分析已经接收的数据,并向传感器/执行器发送数据,...

DFRobot_露娜
2018/07/31
2
0
.NET Core2使用Azure云上的Iot-Hub服务

基于工业4.0大背景下的工业物联网是近几年内热门的话题,依靠信息化技术企业可以实现数字化转型,生产可以实现智能化制造,设备可以实现自动化运作。然而,海量的数据采集是整个建设过程的基...

Andre-Hub
2018/11/06
0
0
重磅 | 阿里巴巴宣布全面进军IoT,成为第五大赛道,5年内发展100亿设备

雷锋网消息,今天在深圳开幕的2018云栖大会·深圳峰会上,阿里巴巴集团资深副总裁、阿里云总裁胡晓明宣布:阿里巴巴将全面进军物联网领域,IoT是阿里巴巴集团继电商、金融、物流、云计算后新...

刘芳平
2018/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
10
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部