51 RESTful api规范、接口项目统一处理错误、后端的接口服务、接口文档说明书、前后端分离、后端解决跨域、cors模块、接口项目

 

51 RESTful api规范、接口项目统一处理错误、后端的接口服务、接口文档说明书、前后端分离、后端解决跨域、cors模块、接口项目

RESTful api规范

前言

使用Express开发可以返回html、css、img等这类的数据。 也可以返回json数据: 只提供json数据的Express服务指的就是接口开发 ,这些数据的返回和之前所讲述http协议有着密不可分的关系,只要正确定义路由、使用合理的请求就能拿到结果,但一个好的接口开发工程师应该遵守RESTful API规范。

readFile( path[,options] )

简介

RESTful规范,是目前一种比较流行的互联网软件设计规范。

这个规范约束的就是路由地址应该如何定义,返回的json接口数据应该如何规范。

优点:

使开发者在进行独立开发或协作开发更能标准,以达到行业的统一。它结构清晰、符合标准、易于理解、扩展方便,越来越多的开发者遵守这种规范。

具体的规范

以用户表为例。

一个表对应一个路由文件模块。

GET: 获取数据。

要求 请求方法 请求地址 参数说明 响应结果说明
获取一组数据 GET /user ?page=10&size=20&....sex=1 [ {},{} ]
获取一个数据 GET /user/:id :id就是数据表中数据的id字段 {}
添加一个数据 POST /user req.body  
删除一个数据 DELETE /user/:id :id就是数据表中数据的id字段  
更新一个数据 PUT /user/:id :id就是数据表中数据的id字段,req.body  

/products

/teachers

/students

响应结果说明

总体字段由对象描述,也就是json

  • 获取一组

{
result:{
data:[],//真正要遍历的数据
total,//总条数
page,//当前页码
totalPage,//总页码
}
msg:‘OK‘,
status:200
}
  • 获取一条

{
result:{}具体的数据
msg:‘OK‘,
status:200
}
  • 删除的

{
msg:‘OK‘,
status:200
}
  • 更新

{
msg:‘OK‘,
status:200
}

 

统一失败的

{
msg:‘error‘,
status:500
}
{
msg:‘Not Found‘,
status:404
}

 

接口项目统一处理错误

404

// catch 404 and forward to error handler
app.use(function(req, res, next) {
// next(createError(404));
res.send({
  msg:‘Not Found‘,
  status:404
})
});
?

 

逻辑错误

// error handler  逻辑错误
app.use(function(err, req, res, next) {
 // set locals, only providing error in development
 console.log(‘我捕获到了next‘)
 res.send({
   status:500,
   msg:err
})
});

 

后端的接口服务

接口是为前端服务的。(数据和字符串拼接)就不在后端做了(不用ejs了)

前端就应该使用ajax调用接口,拿到json数据,再进行渲染页面(字符串拼接在浏览器进行)

 

接口文档说明书

接口的地址: http://api.ujiuye.com

接口的地址: http://localhost:3000

 

接口地址:/student/:id

请求方式:get

参数说明:

参数名称 必填 类型 例如
id int(整数) 12
  --- 必填  

示例:

 http://api.ujiuye.com/student/12
http://localhost:3000/student/12

响应结果说明:

{
"status": 200, //状态码
"msg": "ok",//状态说明
"result": { //真正的数据
"id": 2, //学生id
"idcard": "201502",//学生学号
"uname": "大abc黄",//学生的姓名
"password": "",//学生密码
"age": 18,//学生年龄
"sex": 0,//学生性别 :0男 1女 2保密
"pro": "河南",//学生所属省份
"grade": "本科",//学生的学历
"tidcard": "10001" //学生的老师编号
}
}

 

https://www.juhe.cn/docs/api/id/235

 

前后端分离

简介:前后端是分离的。

后端(指的就是接口)

前端(html页面:html、css、js、ajax)

 

后端解决跨域

原理:就是后端设置响应头。

Access to XMLHttpRequest at ‘http://localhost:3000/student/5‘ from origin ‘http://127.0.0.1:5500‘ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.

在浏览器中,不cors头设置,默认不允许通过ajax发送不同的源。

域名、ip、端口、协议任何一个不同都会产生ajax跨域。

后端收到ajax以后,后端告诉浏览器我允许你跨域( 通过响应头 )

我们有很多路由,所以每一个请求都要允许跨域,所以应该使用中间件。

  • Access-Control-Allow-Origin

    允许哪个源进行跨域

  • Access-Control-Allow-Methods

    默认只允许post和get。而delete和put是不允许ajax请求的

 

cors模块

下载

npm i cors

使用

let cors = require(‘cors‘)
app.use( cors() )

接口项目

我们角色:纯后端工程师的。

后端要根据策划稿(设计稿)

后端根据策划稿或设计稿开发接口。

前端工程师根据设计稿写html页面。

如果是前后端不分离的:那么只有前端写出来html页面,后端才能渲染数据。

前后端分离的:后端和前端可以并行开发。

 

1.还原数据库信息

2.使用express脚手架初始化一个项目

3.在项目中配置一些基本信息

mysql / cors / 404 和错误再统一处理一下

把它的users路由删除

4.开开心心写接口

参照restful 规范

导入mysql的db.js

 

 

 

 

md5

https://www.npmjs.com/package/md5

作用:是把已知的字符串进行加密。

md5(‘a‘)。而每次加密都一样: 0cc175b9c0f1b6a831c399e269772661

https://www.cmd5.com/

 

token

 

websocket

 

 

es6模块化

 

webpack

 

51 RESTful api规范、接口项目统一处理错误、后端的接口服务、接口文档说明书、前后端分离、后端解决跨域、cors模块、接口项目

上一篇:Being a Good Boy in Spring Festival(尼姆博弈)


下一篇:最新win10教育版激活密匙永久激活序列号