FrontendRoute - marmot-cn/marmot-framework GitHub Wiki

前端服务层路由

概述

  • 目前前端服务层只用到GETPOST
  • 前端服务层的路由并没有完全按RESTful的接口规范,只是沿用了其中一部分的规范

没有按照RESTful的原因

  • 不使用PATCHDELETE是因为如果浏览器版本太低是不支持这些的,所以为了保险起见,所有的获取都用GET,创建新的资源或修改资源用POST
  • 针对于与前端的交互如果完全按照RESTful的接口规范是没办法满足现有的交互,如:新增新闻时,前端会先通过接口向你获取新闻的分类,根据RESTful的接口规范我们的路由可以写成GET /news/categories,可是如果请求的资源特别多可能不止是新闻分类,这样可能会导致url膨胀,不易维护

路由请求说明

方法

1. GET

  • GET方法用于检索(或读取)资源的数据
  • 仅用于读取数据而不改变数据
  • 安全
  • 幂等

2. POST

  • 经常被用于创建,修改新的资源
  • 不是安全
  • 不是幂等

资源命名

  • 使用名词命名资源,避免用动词或动作来命名.url应该关联到一个具体的资源而不是关联到一个动作.
  • 一个好的命名应该是能够充分描述它所代表的资源
  • url具备可预测性和分层结构
  • 资源使用复数和单数都是没有问题的,但是建议使用复数,我们所拿到的资源一般都是一个集合,当然如果资源是没有集合的概念就可以用单数.

路由案例

  • 此处我们用新闻当案例,
  • 鉴于我们只有GETPOST两个HTTP动词, 所以我们将对数据不进行任何操作, 只是获取的情况用GET,只要对数据进行改变, 比如修改状态这一类的我们都用POST

1. 获取新闻

GET /news

2. 获取单条新闻,id为1的新闻的详情(此处我们在处理的时候id应该是加密的)

GET /news/{id}

3. 新增新闻

GET 是为了获取新增新闻时可能需要用到的一些配置信息,如新闻分类

这个路由应该写到获取单条的前面, 否则会优先匹配的获取单条路由, 导致提示路由不存在. 后续待解决

GET /news/add

POST 是我们进行的新增操作,提交表单数据

POST /news/add

4. 编辑新闻

GET 是为了获取该新闻详情,同时还需要获取新闻的配置信息

GET /news/{id}/edit

POST 是我们进行的编辑操作,提交表单数据

POST /news/{id}/edit

5. 启用/禁用新闻

修改该新闻的状态为启用/禁用

POST /news/1/{status:enable|disable}