当前位置: 首页 > 知识库问答 >
问题:

前端 - 前后端 页面url与api url 如何统一命名风格?

易弘阔
2023-10-13
  • 打算把页面url,与api url做一个风格统一,查了许多大佬的文章和分析,最后常用的有rest,rpc风格,因为才接触这些风格,恐未掌握其精髓,所以下面定义用了似rest风格.希望得到大家的建议与使用经验,哪种风格更适合监控,更加适合应付生产线上碰到的一些url问题.
  • rest,用 get,post,put,delete来定义动作,围着一个地址,好处,简洁.但多语义比较乏力.
  • rpc, 完全用url定义作用.

前端页面

url -
/content/{id:123} 内容详细页
/contents?order=create_time,desc 内容列表页
/contents/query?create_time=2023/09/01,2023/10/01 搜索
/content/{id:123}/edi 内容编辑页
/content/create 内空创建
/content/edit?id=123 创建编辑页为同一个页面

供前端调用api - 似rpc风格

method url -
get /content/get 单条详细,
get /content/lists?order=file,desc 列表
get /content/query?type=best 查询
post /content/create 新建
post /content/update 更新
post /content/delete 删除
post /content/favorite 收藏

供前端调用api - 似rest风格

method url -
get /contents/{id:123} 单条详细
get /contents?order=file,desc 列表
get /contents/query?type=best 查询
post /contents 新建
put /contents/{id:123} 更新
delete /contents/{id:123} 删除
post /contents/{id:123}/favorite 收藏

共有1个答案

解柏
2023-10-13

在前后端 URL 统一命名风格的问题上,REST 和 RPC 都是有效的解决方案,选择哪种主要取决于你的具体需求和团队约定。以下是对这两种风格的简单介绍和我的个人建议。

  • REST(Representational State Transfer)风格:这是一种基于 HTTP 协议的客户端-服务器交互风格,通过使用 HTTP 方法(GET、POST、PUT、DELETE 等)和 URI 来描述和操作资源。在 REST 风格中,通常使用名词来定义资源,并使用 URI 的不同部分来表示不同的资源。例如,/users/123 表示用户 ID 为 123 的资源。
  • RPC(Remote Procedure Call)风格:RPC 是一种更直接的客户端-服务器交互风格,其中客户端调用服务器上某个特定函数或方法,并传递必要的参数。在 RPC 风格中,URL 通常表示具体的函数或方法,而不是资源。例如,/add?a=1&b=2 可能表示调用服务器上的 "add" 方法,并传递两个参数。

对于你的情况,如果你更希望 URL 能清晰地表示出具体的操作和资源类型,可能会更倾向于 REST 风格。例如,/contents/query?type=best/content/query?type=best 更清晰地表明你正在查询最佳的资源。此外,REST 风格的 URL 更简洁,也更容易为开发者和用户所理解。

然而,如果你需要更精细的方法级别的控制,或者你的服务更像是一种黑盒,可能 RPC 风格更适合。例如,如果你正在构建一个复杂的机器学习 API,可能并不需要将具体的算法暴露给用户,而是希望用户直接调用已经预先定义好的方法,那么 RPC 风格可能更好。

总的来说,选择哪种风格更多的是基于你的应用需求和设计考虑,没有绝对的好坏之分。你可以尝试两种风格看看哪种更适合你的项目和团队。

 类似资料:
  • 前端使用vue,后端使用springboot,前后端分离,且已解决跨域,登录采用jwt验证 想实现功能:如果用户通过url栏输入地址方式来访问某个页面(非登录页),对未登录用户自动跳转登录页面 请问拦截器是设置在后端还是设置在前端?另外对于静态页面能拦截吗

  • 最近刚刚接触到restful风格,即将查增删改分别用get、put、delete、post方式发送 Java后端,对前端不太了解,比较好奇前端如何向后端发送上述四种请求?

  • 牛友已经秋招半截入土,感觉今年面试hc太少,基本都给转正了。说实话面的不好挂了也罢,有点面的还行也没消息。感觉太累了,现在剩下几个面一面看一下,没机会就算了。 Webpack热更新原理 TCP和UDP,功能和应用场景 手写一个react hook实现类似于类组件中setState的功能,支持设置回调函数 实现一个算法 将 “123…ab“,非‘.’部分翻转,得到”321…ba” let var,c

  • 如题,目前通过iframe组件将grafana展示在前端页面中,现想要实现:用户输入设备名并选择时间区间后展示响应时间内某设备的数据(某值的折线图),请问如何配置grafana以及前端代码实现此功能? 目前iframe中相关链接只有类似这样的: localhost:3000/d-solo/afd33dcf-75ea-77bc-a4d1-32237d284c94/new-dashboard?orgI

  • 前端 Front-end 和后端 Back-end 是描述进程开始和结束的通用词汇。前端作用于采集输入信息,后端进行处理。 这种说法给人一种很模糊的感觉,但是他说得又很对,它负责视觉展示。在 MVC 或者 MVP 结构中,负责视觉显示的部分只有 View 层,而今天大多数所谓的 View 层已经超越了 View 层。前端是一个很神奇的概念,但是而今的前端已经发生了很大的变化。你引入了 Backbo

  • 面试半小时 1、自我介绍 2、遍历数组方法(for in,for of,forEach,map) 3、遍历对象方法,哪些方法能遍历继承属性,哪些方法不能 4、不同情况下this指向问题 5、箭头函数this指向 6、call、apply、bind 区别 7、js 执行环境 8、闭包是什么,他的作用及用途、使用环境 9、为什么使用闭包时变量不会被垃圾回收机制销毁 10、变量声明提升有哪几种情况 11