restful 风格设计接口

本文最后更新于:2023年12月5日 晚上

按 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, 让后端代码根据不同的请求类型, 对数据做不同的操作

/**
 * 路由处理
 * 最终这里我们只配置路由, 不实现对应回调函数的具体代码(放到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;
// }

restful 风格设计接口
http://blog.lujinkai.cn/restful风格设计接口/
作者
像方便面一样的男子
发布于
2020年12月7日
更新于
2023年12月5日
许可协议