java的restful api是什么(Restful Api 路径定义规则)
其实java的restful api是什么的问题并不复杂,但是又很多的朋友都不太了解Restful Api 路径定义规则,因此呢,今天小编就来为大家分享java的restful api是什么的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
什么叫java前后端对接
前端和后端连接方式取决于应用程序的需求和技术栈,java常见的五种连接方式如下:
1、RESTful API
使用RESTful API是最常见的前后端连接方式,前端通过HTTP请求与后端进行通信,并获取或提交数据。(如下图所示)
2、WebSocket
采用WebSocket协议实现双向通信,可以实时推送数据给前端。(如下图所示)
3、AJAX
使用AJAX技术进行异步通信,前端通过XMLHttpRequest对象向后端发送请求,并在不刷新页面的情况下更新数据。(如下图所示)
4、RPC
使用RPC框架进行远程过程调用,前端通过调用后端接口获得数据。(如下图所示)
5、GraphQL
对于复杂的应用程序,GraphQL是一种灵活的查询语言,可用于查询和修改后端数据,允许前端根据需要获取所需的数据。(如下图所示)
java前后端对接的难点所在:
1、面对高并发,大数据访问时候,由于前端不合理调用后端接口,导致系统崩溃。接口单一职责造就的前端烦恼,一个功能往往要调不止一个接口才能完成。不断的调接口,对前端也是一种折磨。
2、出入参的规范,这一点也是前后对接的难点,而责任往往在于后端的接口设计。后端设计接口的时候,不能只想着每一个接口就是完成特定的一个作用,而不考虑功能。后端必须要对出入参进行序列化与反序列化的定制,这样才能保证出入参的数据类型是统一的。
Restful Api 路径定义规则
前言
目前网站上已经有很多关于如何去写restful风格的api的文章,主要说明下我接下来写的关于api写法的连载文章的目的,一个是主要把自己在这方面的心得分享给大家,二是希望大家也能给出更好的意见、建议,欢迎在看文章后讨论。
本篇文章主要说下接口路径该怎么定义,一个URL地址的可读性对于调用者和维护者都是很重要的,当你规划好URL该怎么定义后,这也决定了java项目中你的controller类的划分,我们知道一个HTTP接口通常主要结构为:协议://域名/应用content path/自定义路径?查询参数,例如: https://api.zhuma.com/zm-back/users?pageSize=10&pageNum=1代表筑码网后台管理用户功能的API。
那我们到底该怎么定义我们的API URL会更好一些呢?下面给出几点建议。
若域名无法区分出是api还是页面功能的时候,api路径后面统一加/api用于区分是接口服务。
1. https://back.zhuma.com/api/login
2. https://api-back.zhuma.com/login
上面举例中back代表着后台管理的意思,所以想要进入后台管理页面路径应该为: https://back.zhuma.com前台当然要留给 https://www.zhuma.com,在域名使用中我们可以利用三级域名对我们整体系统大的功能或应用进行很好的划分,正是因此,我们看到举例中路径上并没有加上应用的content path。
★备注
建议通过域名去区分api,也就是举例中2的方式
在开发中对于多环境开发我们也可以通过域名来区分,例如:
https://fe-api-back.zhuma.com为联调环境,
https://qa-api-back.zhuma.com为QA测试环境,
https://stg-api-back.zhuma.com为仿真环境,
https://api-back.zhuma.com为生产环境等。
定义自定义路径部分时,使用名词的复数形式定义一个资源,如若有动词词性在url中考虑以下划线区分。
基本操作
GET/users#获取用户列表
GET/users/{userId}#查看某个具体的用户信息
POST/users#新建一个用户
PUT/users/{userId}#全量更新某一个用户信息
PATCH/users/{userId}#选择性更新某一个用户信息
DELETE/users/{userId}#删除某一个用户
批量操作
POST/users/_mget#批量获取多个用户
POST/users/_mcreate#批量创建多个用户
POST/users/_mupdate#批量更新多个用户
POST/users/_mdelete#批量删除多个用户
POST/users/_bulk#批量功能组装(后面会讲到)
动词词性加入url(原则上此种情况是不被推荐的)
GET/users/_search#搜索用户
POST/users/_init#初化所有用户
★备注
这里可能有人会纠结路径参数/users/{userId}是使用userId还是id,毕竟当前资源只有一级,此处不必纠结,原因是:这仅仅是一个后端使用变量而已,不会影响前端的使用,所以我们统一使用userId这种形式定义变量
批量操作时,统一使用POST作为HTTP METHOD,原因是批量操作参数的数据大小不可控,使用request param可能超过某些浏览器对参数的长度限制,实际上,URL不存在参数长度上限的问题,HTTP协议规范没有对URL长度进行限制,这个限制是特定的浏览器及服务器对它的限制。
这里注意一个小点,URL路径是对大小写敏感的,例如:/users和/Users是两个接口哦,但是我们规定URL全部小写。
URL区分功能(管理、我的功能)
上面我们提到的关于/users用户功能的举例,通常情况下,这其实是一个管理用户资源的功能的接口,用于表示对用户这个资源的增删改查等管理功能。
那我的功能是指的什么呢?
通常来说,是对于前端用户下的某某资源的说明,我们通常定义为my-开头。
举例
GET/my-orders我的订单列表
GET/users/{userId}/orders管理查看某一个用户下的订单列表
1.路径中多个单词时,使用中划线-来连接
2.不允许在路径中出现大写字母(查询参数名称除外)
3.接口后省略xxx.do(很多人愿意加上.do这种形式,注意我们的每一个url代表的是一个资源哦)
举例
GET/my-account/profile获取我的账户的简要信息
GET/my-notifications获取我的消息列表
★备注
上面的举例我们看到,my-account是单数而不是复数形式,这里说明下,在系统中如果明确该信息就是单数,那我们在url定义时也应该使用单数表示。
参考:
Restful Api写法心得之一《路径定义篇》
REST webservice与普通的servlet有什么不同
一:Web Service基础知识
一个最简单web服务就一个web页面等待请求与处理。更容易理解的方式是Web
Service可以把一个应用变成一个基本WEB方式的请求与处理的应用。常见的两种
Web Service处理方式为:
a.基于WSDL/SOAP的方式
b. Rest方式
方式a是比较正统的,客户端调用必须先取得WSDL文件,然后生成调用的API才可
以使用。它不是我要说的重点,基本调用流程如下:
方式b是Rest方式,Rest的Web Service的设计原则是基于CRUD,其支持四种操作分
别为:
GET–获取信息/请求信息内容,绝大多数浏览器获取信息时使用该方式。
POST–增加信息内容,显示以前的信息内容,可以看作是insert操作
PUT–更新信息内容,相当与update
DELETE–删除信息内容可以看作是delete
Rest方式更加简单便捷,如果从设计原则上看HTTP协议本身已经是最Restful风格的
协议了HTTP协议很好的支持了CRUD的操作。正是因为如此,WEB2.0以来,基于
Restful的Web Service越来越多的成为首选。
二:认识RestfulStyle
Rest的全称是可表述状态迁移(RepresentationalState Transfer),可能从字面看有点奇怪
HTTP协议本身无状态协议,其保持连接通过设置请求头字段Connection: keep-alive与
设置过期时间来同时控制。其实Rest方式的WebService也是无状态的这样做的好处最少
有以下两个:
1.更好的负载平衡,减轻服务器端负担
2.更快的客户端响应,减少不必要的状态检查。
Restful风格的兴起,要感谢互联网巨头Google,Facebook等他们提供大量基于Restful
风格的web服务,从谷歌地图到天气预报到翻译,国内的互联网巨头腾讯,新浪微博也
发布自己的web服务,吸引更多的开发者加入他们的阵营。Rest除了满足基本的CRUD
设计原则之外,还要遵循如下约定:
1.资源操作可以通过描述来实现即Representation
2.消息本身是无状态与自我描述(传输支持XML与JSON)
3.可以发送与接受多个Representation
Rest风格(Restful Style)架构原则:
1.客户服务器方式
2.无状态协议传输
3.支持缓存
4.统一接口定义
5.分层系统设计
这样发布了Rest的Web服务API其改变不会影响到客户端程序与实现。如果你的系统
不能适用Rest风格的架构怎么办,重新设计一个新的架构,扩展Rest风格架构。但是
这个世界上绝大数的系统与应用要做的事情就是CRUD。
三. Rest与HTTP
上面已经提到过HTTP协议可能是最Rest风格的协议,而HTTP1.1协议设计的一个原则
就要实现Rest风格。所以毫无疑问HTTP的GET, POST, PUT, DELETE就是最好的证明
但是Rest风格是否可以应用到其它一些协议与系统设计中嘛,答案是肯定的,一个最好
的例子证明就POP3协议, POP3支持Fetch数据记录,查询记录,更新记录与删除记录
(记录代表email)多么完美的Rest风格协议。
已经存在的HTTP协议应用:
1.浏览器客户端(你天天上网,不是IE就是Chrome,或者其它浏览器,你懂的)
2.即时消息通信,MSN/Skype支持
3.各种内容管理系统
4.博客系统与微博客户端应用。
5.你可以来补充/?
Rest消息详解:
1.跟我们现在知道的HTTP URI没有什么分别,Google静态地图就是一个很好的例子
只是URL加上不同参数就可以fetch不同的地图内容。
2.可以支持任何类型的数据传输,这点与基于XML与JSON的信息传输有点同,后者
更希望传输文本内容与结构化文本内容
3. SOAP与XML-RPC有严格的消息格式限制,rest没有消息格式要求。客户端调用方
便啊!
Rest风格Web服务的好处,显然易见一个好处就是简化了客户端的调用,不再像WSDL
那般麻烦。从而减低第三方开发者的学习成本,减短了学习曲线。有利于服务推广与普
及,吸引更多用户数量从而带来潜在的商业利益。
在软件即服务(SaaS- Software As A Service)与软件即平台(PasS-Platform
As A Service)中有着重要的地位与应用。这正是那些互联网巨头对Rest风
格感兴趣的原因之一。
四:Rest风格架构
Rest风格可以用在非WEB的系统设计与架构中嘛/?打答案是肯定的,Rest可以用在任何
系统设计中,从本质是上Rest不是一种技术,而是一种架构原则,当然可以用来架构非
WEB的系统。系统越大风格越要象Rest方式如此才是一个成功的架构。
WEB中的面向对象编程
ExtJS, KendoUI(基于JQuery)等JavaScript库已经支持非常方便的从URL中fetch内容
更新数据,前端设计越来越趋向于更加细化的分层设计,而不仅仅是MVC。客户端
程序员应该更多的专注前台用户体验,由于这些框架良好的封装与可扩展行,
JavaScript等语言编程越来越多的引入面向对象的概念与实践。可以好不夸张的说如
今的JavaScript编程与十年之前已经有本质不同。
java的restful api是什么的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Restful Api 路径定义规则、java的restful api是什么的信息别忘了在本站进行查找哦。