Restful风格API接口开发springMVC篇

简介: 转自:http://www.cnblogs.com/qixiaoyizhan/ Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。


 

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。

在Restful风格中,现有规定如下:

  • GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
  • POST(CREATE):在服务器新建一个资源,调用insert操作。
  • PUT(UPDATE):在服务器更新资源,调用update操作。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。(目前jdk7未实现,tomcat7也不行)。
  • DELETE(DELETE):从服务器删除资源,调用delete语句。

了解这个风格定义以后,我们举个例子:

如果当前url是 http://localhost:8080/User

那么用户只要请求这样同一个URL就可以实现不同的增删改查操作,例如

http://localhost:8080/User?_method=get&id=1001  这样就可以通过get请求获取到数据库 user 表里面 id=1001 的用户信息

http://localhost:8080/User?_method=post&id=1001&name=zhangsan  这样可以向数据库 user 表里面插入一条记录

http://localhost:8080/User?_method=put&id=1001&name=lisi  这样可以将 user表里面 id=1001 的用户名改为lisi

http://localhost:8080/User?_method=delete&id=1001  这样用于将数据库 user 表里面的id=1001 的信息删除

这样定义的规范我们就可以称之为restful风格的API接口,我们可以通过同一个url来实现各种操作。


 

接下来我们讲解spring-mvc中是如何实现restful风格API接口的,并且对其中出现的问题进行解决!(java web对 put 和 delete 请求的不支持问题)

首先我们搭建好spring mvc的项目接口,并按照restful风格写好控制器,这里我写了一个User控制器类和一个User "Action" ->

这里的controller 和 action的url地址是按照restful风格编写的 访问地址 /User/User 用method区分请求方法

我们的前台使用的是jquery ajax进行请求->

有人会问了? 为什么delete 和put用的也是post的请求,这里就要说说java里面对put和delete的不支持了->

java里面原本是对put和delete请求进行过滤掉的(不知道为什么要这么做),而且在servlet里面还有doGet,doPost,doDelete,doPut的对应方法,但是不可以使用(尴尬不尴尬),同样spring mvc里面也有对应的method=RequestMethod.PUT 和Delete,但是ajax里面type写成Put、Delete是可以访问到对应的方法的,但是参数却无法传递过去,所有传递过去的参数都是null(郁闷不郁闷)!C#就不会这样,C#的API编程需要开启一下PUT和Delete就可以了,并不需要java里面这么复杂,说到这里我们解决一下这个问题->

首先在springMVC 项目的Web.xml里面增加一个过滤器filter

复制代码

1 
2     
3         hiddenHttpMethodFilter
4         org.springframework.web.filter.HiddenHttpMethodFilter
5     
6     
7         hiddenHttpMethodFilter
8         /*
9     

复制代码

 

当然有些新手不知道这段代码加在哪里,那么我就将我的web.xml一并粘贴在此处(我也搞这个半天...)

复制代码

 1 
 2 
 6 
 7     
 8     
 9         hiddenHttpMethodFilter
10         org.springframework.web.filter.HiddenHttpMethodFilter
11     
12     
13         hiddenHttpMethodFilter
14         /*
15     
16 
17     
18     
26 
27 
28     
29         /index.jsp
30     
31     
32     
33         spring
34         org.springframework.web.servlet.DispatcherServlet
35 
36         
37         1
38     
39 
40     
41         spring
42         /
43     
44 
45     
46     
47         org.springframework.web.context.ContextLoaderListener
48     
49 
50     
51     
52         contextConfigLocation
53         classpath:applicationContext.xml
54     
55 

复制代码

 

这里我们将过滤器配置好了,我有一段注释掉了,如果用下面这个配置文件->

复制代码

1  
2     
3         HttpMethodPutFilter
4         org.springframework.web.filter.HttpPutFormContentFilter
5     
6     
7         HttpMethodPutFilter
8         /*
9     

复制代码

这个配置项如果写在这里的话是可以支持PUT请求的,但是DELETE请求依然不可以,那么我只能选择第一种方法了

复制代码

1 
2         hiddenHttpMethodFilter
3         org.springframework.web.filter.HiddenHttpMethodFilter
4     
5     
6         hiddenHttpMethodFilter
7         /*
8     

复制代码

 

这一段的方法是用 org.springframework.web.filter.HiddenHttpMethodFilter 的内置过滤器类进行对http请求的标准化。这样让我们可以自己声明请求的方式。

配置完成这个以后,我们在ajax里面需要传递一个参数_method:"PUT" 和 _method:"DELETE",但是请求方式仍然是POST

这样配置的话,我们已经可以实现对DELETE修饰的方法进行访问,同样_method:'PUT'我们可以对PUT修饰的方法进行访问,这样我们上面定义的控制器类已经可以实现了。

 

 

目录
相关文章
|
22天前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
64 10
|
23天前
|
API 开发工具 数据库
开发一份API接口,需要注意这些,看你做到了几项
本文介绍了设计API接口时需注意的关键点,包括数字签名、敏感数据加密与脱敏、限流、参数校验、统一返回与异常处理、请求日志记录、幂等设计、数据量限制、异步处理、参数定义、完整文档及开发者对接SDK等内容,旨在帮助开发者设计出安全、稳定、易维护的API接口。
87 6
开发一份API接口,需要注意这些,看你做到了几项
|
1天前
|
数据可视化 搜索推荐 API
速卖通获得aliexpress商品详情API接口的开发、应用与收益。
速卖通(AliExpress)作为阿里巴巴旗下的跨境电商平台,为全球消费者提供丰富商品。其开放平台提供的API接口支持开发者获取商品详情等信息,本文探讨了速卖通商品详情API的开发流程、应用场景及潜在收益,包括提高运营效率、降低成本、增加收入和提升竞争力等方面。
12 1
|
19天前
|
缓存 前端开发 API
深入浅出:后端开发中的RESTful API设计原则
【10月更文挑战第43天】在数字化浪潮中,后端开发如同搭建梦想的脚手架,而RESTful API则是连接梦想与现实的桥梁。本文将带你领略API设计的哲学之美,探索如何通过简洁明了的设计,提升开发效率与用户体验。从资源定位到接口约束,从状态转换到性能优化,我们将一步步构建高效、易用、可维护的后端服务。无论你是初涉后端的新手,还是寻求进阶的开发者,这篇文章都将为你的开发之路提供指引。让我们一起走进RESTful API的世界,解锁后端开发的新篇章。
|
18天前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
|
23天前
|
JSON API 数据格式
如何使用Python开发1688商品详情API接口?
本文介绍了如何使用Python开发1688商品详情API接口,获取商品的标题、价格、销量和评价等详细信息。主要内容包括注册1688开放平台账号、安装必要Python模块、了解API接口、生成签名、编写Python代码、解析返回数据以及错误处理和日志记录。通过这些步骤,开发者可以轻松地集成1688商品数据到自己的应用中。
31 1
|
20天前
|
Web App开发 人工智能 自然语言处理
WebChat:开源的网页内容增强问答 AI 助手,基于 Chrome 扩展的最佳实践开发,支持自定义 API 和本地大模型
WebChat 是一个基于 Chrome 扩展开发的 AI 助手,能够帮助用户理解和分析当前网页的内容,支持自定义 API 和本地大模型。
53 0
|
21天前
|
数据采集 自然语言处理 搜索推荐
淘宝评价API接口的开发与应用
在数字化商业时代,数据成为企业提升竞争力的关键资源。淘宝作为电商巨头,其商品评论数据极具价值。本文详细介绍了淘宝评价API接口的开发流程与应用场景,从注册账号、获取密钥到实际调用和数据解析,再到商品分析、店铺管理、个性化推荐等多个方面,全面解析了技术细节与实践方法,为企业和开发者提供了宝贵的技术支持和数据资源。
84 0
|
24天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
1月前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。