SSM+RESTful+ajax——开发Java Web

  前段时间在参加学院里的一个比赛的时候和朋友一起弄了一个简单的网络论坛项目,使用的技术有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等)实施不同的业务。

  一般情况

CRUD操作 HTTP方法
Create POST
Read GET
Update PUT/PATCH
Deleta DELETE

  在之前,增加数据可能是这样:(在这个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://github.com/Highflyer/REST_API_DESIGN_GUIDE



  这篇文章只是自己在网上了解后写下的个人理解,如果有误希望大佬们能指出

原文地址:https://www.cnblogs.com/ELAIRS/p/12152444.html

时间: 2024-10-01 21:22:32

SSM+RESTful+ajax——开发Java Web的相关文章

使用RESTful风格开发Java Web

什么是RESTful风格? REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移),REST 是一种体系结构,而 HTTP 是一种包含了 REST 架构属性的协议,为了便于理解,我们把它的首字母拆分成不同的几个部分: 表述性(REpresentational): REST 资源实际上可以用各种形式来进行表述,包括 XML.JSON 甚至 HTML--最适合资源使用者的任意形式: 状态(State): 当使用 REST 的时候,我们更关注资源

使用InteIIiJ IDEA开发Java web 项目

1.介绍 IntelliJ IDEA是一款非常强大的集成开发环境,基本上可以做任何事情,它的强大大大降低了我们的工作量,提高了工作效率.那么它如何开发Java web呢?下面就为大家介绍使用IntelliJ IDEA开发Java web. 首先去官网下载安装包:http://www.jetbrains.com/idea 它有两个版本Ultimate(收费)和Community(免费),作者选择的是Ultimate 2.安装 点击下载即可,然后开始安装,一直Next就可以了,途中可以选择创建一个6

IntelliJ IDEA: maven & jetty 开发 java web

之前使用eclipse + maven + jetty开发java web应用,本着no zuo no gain的想法, 折腾了一下Intellj idea下开发环境的搭建,顺带学习了maven repository的概念. 环境 系统:OS X Yosemite IDE:IntelliJ IDEA 14.0.1 CE JDK:1.8.0_25 svn使用 svn checkout项目到project 图 1. svn maven使用 右侧栏Maven Projects:Maven Projec

Java EE 学习(2):使用IntelliJ IDEA开发java web

参考:http://www.cnblogs.com/carsonzhu/p/5468223.html 使用IntelliJ IDEA开发java web 前言:由于本人接触java语言时间还比较短,IDE工具eclipse还比较熟悉点,想试试用IntelliJ IDEA来开发java web项目来练练手! 一.下载安装篇 1.安装IntelliJ IDEA 官网的下载地址: http://www.jetbrains.com/idea/download/ ,支持mac/windows/linux三

使用IntelliJ IDEA开发java web

前言:由于本人接触java语言时间还比较短,IDE工具eclipse还比较熟悉点,想试试用IntelliJ IDEA来开发java web项目来练练手! 一.下载安装篇 1.安装IntelliJ IDEA 官网的下载地址: http://www.jetbrains.com/idea/download/ ,支持mac/windows/linux三大主流平台,我用的是windows版本. 注:IntelliJ IDEA是商业软件,有二个版本, Ultimate Edition是商业版本,功能完善,可

基于Apache axis2开发Java Web服务

1.安装配置axis2环境 1)下载axis2-1.4.1-war(发布webservice)和axis2-1.4.1-bin.zip(webservice调用使用的各种包) 下载好后把axis2-1.4.1-war目录下面的axis2.war发布到tomcat的webapps中. 发布好,访问:http://localhost:8079/axis2/  界面如下: 2.开发web服务 1)创建一个java web project 2)编写服务代码 1 public class SampleSe

使用eclipse开发Java web应用

前面说了手动配置一个应用,手动配置可以更深入的理解web应用的分布,但是一般的编辑器没有语法错误提示,所以开发起来对于错误的寻找不太容易,效率相对较低,所以在理解清楚web项目的结构之后,我们使用eclipse开发的话,能够使效率更高 开发可以使用eclipse for JavaEE或者MyEclipse都是可以的,项目目录大致相同,只是运行的方式不一样,eclipse是配置虚拟的环境执行应用,MyEclipse运行的时候还是把项目发不到tomcat服务器下的webapps中去运行,相对来说兼容

开发Java web时让Eclipse支持编写HTML/JS/CSS/JSP页面的自动提示

平时用eclipse开发jsp页面时智能提示效果不太理想,其实eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:zjava   点击apply按钮 如图: 2.继续打开JavaScript→

使用intelliJ IDE开发java web项目

使用maven 开发springmvc apring mybatis web项目. 1.File -> New Project ,进入创建项目窗口 2 出现以下界面 3 按照如上选项进行点击,点next 4 上面两项随便填,点击next 上面选项中可以直接使用默认配置.我修改的local repository是本地仓库位置,可以改也可以不改.下面在Properties中添加一个参数 archetypeCatalog=internal,不加这个参数,在maven生成骨架的时候将会非常慢,有时候直接