java restful接口ajax_SSM RESTful ajax——开发Java Web

news/2024/7/7 10:46:19

前段时间在参加学院里的一个比赛的时候和朋友一起弄了一个简单的网络论坛项目,使用的技术有ssm、mysql、ajax、jquery、html等。刚开始的时候打算前后端分离开发,由于以前没有经验,所以就摸索着写。项目中大概是前端编写好html,不包含数据,后端提供url接口,在进入页面时调用接口,然后前端将返回的数据填写到html中。最后在项目验收的时候有被问到有没有用RESTful,虽然听过, 但是没仔细了解, 于是在网上简单了解了一下,并且记录下来。

什么是RESTful:

RESTful是一种网络应用程序的设计风格和开发方式。在前后端分离思想开始增长的以后,前端静态页面需要调用指定API获取数据,而如何设计一个便于理解、使用的API成为了一个问题,而RESTful就是用来规范API的一种约束。

RESTful中,资源通过URL定位,通过HTTP方法(POST、GET等)来定义完成什么功能。

在RESTful风格中,使用同一个URL,约定不同的HTTP方法(POST、GET等)实施不同的业务。

179641431_1_20200105030457394.png

一般情况CRUD操作HTTP方法

CreatePOST

ReadGET

UpdatePUT/PATCH

DeletaDELETE

在之前,增加数据可能是这样:(在这个controller类中是有声明外层RequestMapping的,实际访问URL 应该是 post/addPost)1 /**

2 * 发帖

3 * @param post

4 * @return

5 */

6 @RequestMapping(value = "/addPost",produces = "application/json; charset=utf-8")

7 public @ResponseBody String addPost(HttpSession session,@RequestBody Post post){

8 //具体操作省略

9 }

前端使用ajax,访问/addPost  URL进行数据的增加。

Spring4.3之后,为了支持RESTful风格,增加了@PutMapping、@GetMapping、@DeleteMapping、@PostMapping这几个注解,可以直接将method属性和@RequestMapping绑定,先在增加数据可以这样:1 @PostMapping(value = "/{id}")

2 public @ResponseBody String addPost(@PathVariable Long id){

3 //处理数据

4 }

这样只需要通过POST访问post就能实现增加数据的功能。

RESTful规范

1、参数命名规范

参数使用驼峰命名法或者下划线方式命名。

2、url命名规范

在RESTful架构中,每个url代表一种资源,每个url代表一种资源所以url中不能有动词,只能有名词,并且名词中也应该使用复数。实现者应使用相应的Http动词GET、POST、PUT、PATCH、DELETE、HEAD来操作这些资源即可不规范的的url,冗余没有意义,形式不固定,不同的开发者还需要了解文档才能调用。https://example.com/api/getallUsers GET 获取所有用户

https://example.com/api/getuser/1 GET 获取标识为1用户信息

https://example.com/api/user/delete/1 GET/POST 删除标识为1用户信息

https://example.com/api/updateUser/1 POST 更新标识为1用户信息

https://example.com/api/User/add POST 添加新的用户

规范后的RESTful风格的url,形式固定,可读性强,根据users名词和http动词就可以操作这些资源https://example.com/api/users GET 获取所有用户信息

https://example.com/api/users/1 GET 获取标识为1用户信息

https://example.com/api/users/1 DELETE 删除标识为1用户信息

https://example.com/api/users/1 Patch 更新标识为1用户部分信息,包含在body中

https://example.com/api/users POST 添加新的用户

3、统一返回数据格式

对于合法的请求应该统一返回数据格式,例如返回的一个json数据应该包含:

code —— 包含一个整数类型的HTTP响应状态码

status —— 包含文本:”success”,”fail”或”error”。HTTP状态响应码在500-599之间为”fail”,在400-499之间为”error”,其它均为”success”(例如:响应状态码为1XX、2XX和3XX)。这个根据实际情况其实是可要可不要的。

message——当状态值为”fail”和”error”时有效,用于显示错误信息。参照国际化(il8n)标准,它可以包含信息号或者编码,可以只包含其中一个,或者同时包含并用分隔符隔开。

data——包含响应的body。当状态值为”fail”或”error”时,data仅包含错误原因或异常名称、或者null也是可以的。

返回成功的响应json格式1 {

2 "code": 200,

3 "message": "success",

4 "data": {

5 "userName": "123456",

6 "age": 16,

7 "address": "beijing"

8 }

9 }

返回失败的响应json格式1 {

2 "code": 401,

3 "message": "error message",

4 "data": null

5 }

4、http状态码1**请求未成功

2**请求成功、表示成功处理了请求的状态代码。

3**请求被重定向、表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

4** 请求错误这些状态代码表示请求可能出错,妨碍了服务器的处理。

5**(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

这个篇文档对设计规范有很详细的描写

这篇文章只是自己在网上了解后写下的个人理解,如果有误希望大佬们能指出来源:https://www.icode9.com/content-1-608151.html


http://www.niftyadmin.cn/n/3045995.html

相关文章

使用 Named Pipes 创建有效的连接字符串

使用 Named Pipes 创建有效的连接字符串 SQL Server 2008 SQL Server 2005 默认 Microsoft SQL Server 实例侦听“named pipes”协议时,除非用户进行了更改,否则将使用 //./pipe/sql/query 作为管道名称。句点指示该计算机是本地计算机,pip…

数字推盘游戏java_最强大脑数字推盘游戏-最强大脑数字推盘游戏官方版 v1.0预约_手机乐园...

游戏简介最强大脑数字推盘游戏是一款根据同名综艺节目的挑战项目改变制作的益智闯关游戏。游戏中玩家你要走的就是将各个数字合理的进行移动与组合,而且是要在规则的限制下进行移动,这样一来你就能组出对应的数字图片的同时完成关卡的相关挑战要求。当然…

【志银】Dev-Cpp配置OpenGL图形库(成功版本:Dev-Cpp 5.7.1 MinGW 4.8.1)

★配置前须知:Dev-Cpp自带OpenGL的使用和OpenGL简介 (附Dev-Cpp下载地址:http://sourceforge.net/projects/orwelldevcpp/?sourcedirectory) OpenGL简介:OpenGL(全写Open Graphics Library)是一个功能强大&#xff0c…

Javascript内存泄漏原理

Javascript内存泄漏原理 1.何为内存泄漏? 内存泄漏是指分配给应用的内存不能被重新分配。一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束就会产生内存泄露。在C中,因为是手动管理内存,内存泄露是经常出现的…

彻底解决 SQL Server 无法连接 连接失败

如何解决 SQL Server 2000 中的连接问题 http://support.microsoft.com/kb/827422/zh-cn本文能帮助您解决 Microsoft SQL Server 2000 的连接问题。本文描述了常见连接问题和所能采取的有助于解决连接问题的步骤。 SQL Server 2000 支持 SQL Server 实例和客户端应用程序间的多…

Javascript内存泄漏检测工具

Javascript内存泄漏检测工具 内存泄漏对开发者来说一般很难检测因为它们是由一些大量代码中的意外的错误引起的,但它在系统内存不足前并不影响程序的功能。这就是为什么会有人在很长时间的测试期中收集应用程序性能指标来测试性能。 最简单的检测内存泄漏的方式是用…

关于“实体商城会不会消失”及虚拟现实(Virtual Reality)的一点思考

有句俗话叫“一铺养三代”,在电子商务如此发达的今天还是这种情况吗?现在的淘宝、京东等等电商软件以及微商等虚拟商城越来越流行,仅天猫双十一一天就达到了900多亿的购买量,虚拟商城会取代实体商城吗? 对于这个问题每…

图片搜索

网站搜索引擎是如何实现图片搜索的? 抓取网页主要是关键字,抓取图片应该是alt,他有自己的数据库,抓取过后截取字符串进行归类,这是我想的哈,如何抓取好像是靠机器人蜘蛛程序 每张图片都必需添加alt信息,信息…