FrontendRoute - marmot-cn/marmot-framework GitHub Wiki
前端服务层路由
概述
- 目前前端服务层只用到GET和POST
- 前端服务层的路由并没有完全按RESTful的接口规范,只是沿用了其中一部分的规范
没有按照RESTful的原因
- 不使用PATCH和DELETE是因为如果浏览器版本太低是不支持这些的,所以为了保险起见,所有的获取都用GET,创建新的资源或修改资源用POST
- 针对于与前端的交互如果完全按照RESTful的接口规范是没办法满足现有的交互,如:新增新闻时,前端会先通过接口向你获取新闻的分类,根据RESTful的接口规范我们的路由可以写成
GET /news/categories
,可是如果请求的资源特别多可能不止是新闻分类,这样可能会导致url膨胀,不易维护
路由请求说明
方法
1. GET
- GET方法用于检索(或读取)资源的数据
- 仅用于读取数据而不改变数据
- 安全
- 幂等
2. POST
- 经常被用于创建,修改新的资源
- 不是安全
- 不是幂等
资源命名
- 使用名词命名资源,避免用动词或动作来命名.
url
应该关联到一个具体的资源而不是关联到一个动作. - 一个好的命名应该是能够充分描述它所代表的资源
url
具备可预测性和分层结构- 资源使用复数和单数都是没有问题的,但是建议使用复数,我们所拿到的资源一般都是一个集合,当然如果资源是没有集合的概念就可以用单数.
路由案例
- 此处我们用新闻当案例,
- 鉴于我们只有GET和POST两个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}