restful 风格设计接口

按 resful 风格设计接口: 按资源来设置接口的请求地址, 通过不同的请求类型来区分要对这个资源进行什么操作

get 语义是获取数据

post 语义是添加信息

delete 语义是删除数据

put 语义是更新数据(是更新这个数据的【所有信息】)

patch 语义是更新数据(是更新数据的【部分信息】)

假如要做注册

请求类型: post

请求地址: ‘/users’ (必须表示的是资源)

假如要做登录

请求类型: post (因为登录之后服务器的变化就添加了一个 session)

请求地址: ‘/sessions’

假如要做退出登录

请求类型: delete

请求地址: ‘/sessions/id’ (退出登录就是服务器删除 session)

假如要判断用户有没有登录

请求类型: get

请求地址 ‘/sessions’

总结: restful 风格 api

  1. 我们使用一个能够表示资源的地址(资源是数据库里的一条数据, 或是数组里的一个元素, 或者文件夹中的一个文件)

  2. 我们通过不同的请求类型(get, post, delete, put, patch), 对这个地址对应的资源进行 CRUL, 让后端代码根据不同的请求类型, 对数据做不同的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
* 路由处理
* 最终这里我们只配置路由, 不实现对应回调函数的具体代码(放到controllers文件夹中)
* 按 restful 风格设计接口:
* 按资源来设计我们的接口的请求地址, 通过不同的请求类型,来区分要对这个资源进行什么操作
* 示例:
* '/gamerooms/998' 对应998这个房间号
* // 获取房间的信息
* router.get('/gamerooms/998', handler001)
* // 删除该房间
* router.delete('/gamerooms/998, handler002)
* // 修改房间信息
* router.put('/gamerooms/998, handler003)
* // 添加新房间
* router.post('/gamerooms', handler004)
*
* // get 语义是获取数据
* // delete 语义是删除数据
* // put 语义是更新数据(是更新这个数据的【所有信息】)
* // patch 语义是更数据(是更【新部分信息】)
*/
const express = require("express");
const gameRoomController = require("../controllers/gameRoomController.js");
const friendController = require("../controllers/friendController.js");
const userController = require("../controllers/userController.js");
const router = (module.exports = express.Router());

// 注册
router.post("/users", userController.postSignUp);
// 登陆
router.post("/session", userController.postSignIn);

// 游戏房间
router.post("/gamerooms", gameRoomController.postGameRooms);
router.get("/gamerooms", gameRoomController.getGameRooms);
// 搜索用户, 和获取好友
router.get("/users", userController.getUsers);
router.get("/friends", friendController.getFriends);
router.post("/friends", friendController.postFirends);

/**
* 游戏房间创建,删除,修改,查询
*/
// router.post('/gamerooms', gameRoomController.postGameRooms)
// router.get('/gamerooms', gameRoomController.getGameRooms)

/**
* 游戏记录,查询游戏记录,删除游戏记录,修改记录, 添加记录
*/
// 假设游戏记录地址是: /gamerecords/10002 (包含: 游戏房间号,玩家,游戏时间)

// 获取一条游戏记录详细信息
// router.get('/gamerecords/10002', xxxx001)

// 删除这条游戏记录信息
// router.delete('/gamerecords/10002', xxxx002)

// 修改记录(想修改游戏的所有信息: 房间号,玩家, 游戏时间)
// router.put('/gamerecords/10002', xxxx003)

// 修改记录(只想修改房间号)
// router.patch('/gamerecords/10002', xxxx04)

// 添加一条游戏记录
// router.post('/gamerecords/10002', xxxx05)

// 获取所有游戏记录(也可能包含分页)
// router.get('/gamerecords', xxxx07)

// 对于前端来说 restful api 有没有开发难度:
// $.ajax({
// url: '',
// // type: 'delete',
// type: 'put',
// data: {},
// success: function () {

// }
// })

// users/10002
// 假如要做注册:
// 请求类型: post
// 请求地址: '/users' (必需表示的是资源)

// 假如要做登陆:
// 请求类型: post
// 请求地址: /sessions // 因为登陆其实是添加的 session

// 假如退出登陆
// 请求类型: delete
// 请求地址: /sessions/id // 退出登陆,服务器是要删除session

// 假如要判断用户有没有登陆
// 请求类型: get
// 请求地址: /sessions

// '/deluser'
// '/getuser'

// 总结: restful 风格 api
// 1. 我们使用一个能够表示资源的地址(资源是数据库里的一条数据,或者数组里的一个元素,或者文件夹中的一个文件)
// 2. 我们通过不同的请求类型(get, post, delete, put, patch), 对这个地址对应的资源
// 进行CRUD, 让后端代码根据不同的请求类型,对数据做不同的操作。

// 我遵循的风格: javascrtip standard style
// function xxx () {
// var aa = 11;
// }
1