您的位置:首页 > 理论基础 > 计算机网络

是时候写篇博客了,关于linux和http

2015-12-24 00:38 477 查看

是时候写篇博客了,关于linux和http

标题看起来好厉害啊23333 然而并没有

只是找到了这么一个网站,叫做瀑布im,这是一个团队协作网站,有一个聊天机器人的接口。然后实战了一下,做了一个最简单的随机数的机器人。。

这个借口是像你提供的http服务器进行一次post,然后如果返回一个JSON字符串,就将JSON字符串中的text发送到聊天框里。在实际开始之前大概的搜索了一下,可以用php或者些别的什么东西,但是用node.js的话只需要node.js,而且配环境相当好配,所以选择了node.js。

(当然这么说不意味着我用其他语言进行过了hello world,只是看教程的说法和nodejs配起来的确没遇到什么麻烦而已。。)

这个过程中使用了Node.js,还有腾讯给高校学生的1块钱每月的服务器。。(相比之下阿里云10块钱真是贵)

从腾讯的服务器怎么用开始说吧233

之前折腾过一次我OpenWrt的路由器(虽然最后被我弄成砖了),所以对SSH和linux有了一个初步的了解(然而文件权限系统还是一窍不通)。在腾讯给的服务器上是全程用SSH对着那个黑框框用命令行操作的。(不过如果你给我个可视化的环境我就不会了。。。)

用到的软件:

PuTTY,用于登录服务器

WinSCP,用于把本地写好的程序上传下去(vi实在是用不惯,还是直接上传文件比较省劲一点)

NotePad++

chrome 抓包

node.js 虽然安装了windows版本,但是不知道为什么在本地可以运行的脚本到服务器上就不能运行了,所以在本地上的基本没用到。

其他的想不起来了,windows之类的吧233

从腾讯云说起

腾讯云的服务器为了安全是使用密钥登录的,并不需要密码,只需要用户名(然而我并不知道这到底有多么安全,这方面不是很懂)。在腾讯就可以生成一对公钥和密钥,不过得到的是一个无格式的文本文件,
PuTTY
是不认的,需要用
PuTTY
自带的
PuTTYGEN
转换成
*.ppk
格式,然后在
PuTTY
SSH-Auth
里设置就可以了。po主一开始只下载了
PuTTY
,没下载那个压缩包(压缩包里提供了
PuTTYGEN
),一直在
PuTTY
里直接导入的腾讯给的那个文件,被坑了好久才发现。。。。

做为linux初学者,腾讯提供的各种linux版本并不知道有什么区别,反正是要运行
node.js
程序,我用到的区别只有包管理器的命令不同而已。。。。所以安了个CentOS(其实是有计算机专业的朋友学linux用的这个发行版,要是遇到了什么问题好问他)

然后就是linux相比于windows省劲多的地方了,有包管理器这么个东西存在。。。直接
yum install nodejs
即可,
yum
是CentOS中包管理的名字,这条命令的意思是安装
node.js
,当然
node.js
本身也有个包管理器叫做
num
,也是需要
yum installation num
安装的。不过我并没有用到。所以并不了解。

安装之后就可以运行了。输入命令(#是我linux的命令提示符)

# node

就会进入
node.js
的交互环境。,使用的是
>
符号,先运行个
hello world


> console.log(“hello world”);

他会输出

hello world

JS对单双引号和句末分号都不敏感,所以写不写都可以,但是同一个字符串前后的引号要匹配,也就是说
'string"
"string'
不会被识别成字符串。

(感觉好像python。。。)

也可以像python一样。把这句话放在一个
hello-world.js
文件中,然后使用命令运行

# node hello-world.js

输出结果与前面是相同的。

现在开始正经的说说语言本身

因为我是前天才开始学的(虽然昨天写出来的程序就能跑了而且现在正在跑。。)所以其实语音本身我没有学到多少,学到的更多是一些更基本的东西,比如HTTP协议是怎么起作用的。。。

首先需要一个服务端和服务端,由客户端向服务端发起一次请求,然后服务端才能返回给客户端一段数据。客户端给服务端发的请求有可能是带数据的
POST
,或者是不带数据的简单的请求数据的
GET
,比如我们要访问一个网页的时候就需要给服务器发送一个
GET
请求,然后服务器会把网页发送回来。

这个接口要求我返回一个
JSON
,实际上我返回的是一个HTTP数据包,数据包的head中有
Content-Type
,这个量是告诉客户端,服务器发送的http数据包中的内容是什么内容,比如说有
text/html
,表示数据包里传输的是html格式的网页。我的数据包定义的http头是
application/JSON
,接口要求的就是这个格式,看这样子也不是很奇怪,估计协议里是这种数据类型的。

所以需要说说数JSON

JSON的定义在JSON的百度百科可以找到,但其实就是js中有一个方法可以简单的把js的对象转换成字符串(这个方法我一开始不知道,直接手写了这个字符串,然后各种出错……)

比如原来

person=new Object();

person.firstname=”Bill”;

person.lastname=”Gates”;

person.age=56;

person.eyecolor=”blue”;

做为对象来说

person

{ firstname: ‘Bill’,

lastname: ‘Gates’,

age: 56,

eyecolor: ‘blue’ }

然后如果需要传递给另外的某个程序使用,不能直接发送person这个对象,需要转换成字符串,转换成的字符串是这样的

‘{“firstname”:”Bill”,

“lastname”:”Gates”,

“age”:56,

“eyecolor”:”blue”}’

可以看到,原来是

{key=value}

现在是

‘{“key”:value}’

信息没有丢失,转换成的字符串更加便于在不同的程序之间通信。

然后js自带的方法是
JSON.stringify(JsonObjects)
,返回的就是JSON字符串了。

然后是我从其他地方手抄来的代码。。。

先写到这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息