文章目录
前言
上一篇文章我们介绍了nodejs的web 服务器 part 1,内容如:web服务器请求和响应简单介绍、用nodejs创建一个简单的web服务器等,详见:
Node.js后端开发 - 基础篇 #9 web 服务器 part 1 介绍,这篇文章我们将来介绍一下web 服务器是怎么响应返回JSON格式的数据的?我们在做api开发的时候会经常用到json,客户端也会请求json进行解析处理得到一些数据,之前上篇文章我们介绍到是怎么响应纯文本的,下面我们开始讲响应返回JSON格式的数据!
web服务器响应json数据
我们先来看看代码,如下:
var http = require('http');
var onRequest = function (request, response) {
console.log('Request received');
// response.writeHead(200, { 'Content-Type': 'text/plain' });
response.writeHead(200, { 'Content-Type': 'application/json' });
//定义json对象
var myObj = {
name: "yyh",
job: "android",
age: 18
};
//response.end('hello from server');
//把json数据作为响应内容输出出来
response.end(JSON.stringify(myObj));
}
var server = http.createServer(onRequest);
server.listen(3000, '127.0.0.1');
console.log('server started on localhost port 3000');
首先我们运行启动server
MacBook-Pro:hello-nodejs luminal$ node app
server started on localhost port 3000
然后在我的谷歌浏览器上面输入:http://localhost:3000/,就会返回如下json数据
{"name":"yyh","job":"android","age":18}
表示客户端获取到了json数据!同样终端输出了 Request received,表示收到了客户端发送过来的请求
MacBook-Pro:hello-nodejs luminal$ node app
server started on localhost port 3000
Request received
Request received
stringify方法使myObj变成一个字符串类型的json,它其实是一个序列化的过程,这样就可以用于传输。如果你要在客户端取出来,那么就要进行反序列化!
简单介绍 json的生成和传输
下面我们去浏览器的控制台,演示一下,我们可以如下操作:
1、首先把控制台清理一下,如下
2、然后输出如下语句
(1)首先我们把定义的json对象,复制进去,回车,然后输入myObj,回车,它返回的是json数据对象
{name: "yyh", job: "android", age: 18}
点击左边小三角,还可以下拉预览
(2)然后我们输入,JSON.stringify(myObj); ,回车,我们可以看到它变成一个用双引号包裹起来的字符串
"{"name":"yyh","job":"android","age":18}"
就是说它还是一个字符串,但是它是一个json格式的字符串,这种格式方便客户端和服务端之间的数据传输。
(3)那么我们怎么把它取出来呢?我们输入:JSON.parse(JSON.stringify(myObj)); ,回车,它又变回来了
{name: "yyh", job: "android", age: 18}
也就是说他们是 序列化 和 反序列化 的过程,序列化就是把它转成字符串,反序列化就是把它转换为原有的对象 或 json
有关链接参考:
浏览器json自动格式化插件 — JSON formatter :
https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa?hl=zh-CN
JSON.stringify: