@Constoller
@RequestMapping('/api/user')
class UserApi {
@RequestMapping(value = '/{id}', method = RequestMethod.GET)
User get(@PathVariable long id) {
//... load user, etc
}
@RequestMapping(value = '/{id}', method = RequestMethod.POST)
User update(@PathVariable long id, @RequestModel User updated) {
//... load user, update values, etc
}
}
RESTful web服务最近有多流行已经无需我多评价。是的,你的确需要它,但如何选择呢?我尝试了不同的Java REST框架,基本上都是Jersey和Spring MVC。我认为大多数情况下Spring是构建RESTful应用程序的首选。
如果你已经有了一个Spring app,接下来不需要做任何复杂的配置就可以用Spring开始实现RESTful API了。只要使用标准的注解配置向下面这样配置JSON视图解析器(view resolver ):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//这个示例使用了Groovy,相信你能够理解 @Constoller @RequestMapping('/api/user') class UserApi { @RequestMapping(value = '/{id}', method = RequestMethod.GET)
User get(@PathVariable long id) {
//... load user, etc
}
@RequestMapping(value = '/{id}', method = RequestMethod.POST)
User update(@PathVariable long id, @RequestModel User updated) {
//... load user, update values, etc
}
} |
当然,你可以不用JSON转而XML或者使用ProtoBuf以及其他什么。这很简单而且不会因为修改造成代码错误,比起Jersey要简单很多。
通常你的应用程序除了RESTful API还会有其他东西,比如标准的HTML页面、文件下载/上传、复杂的API请需求数据流处理、重要的后台处理、数据库访问、复杂的认证和授权与外部服务集成等等。Spring框架可以将这些完成得很好。同时我最喜欢的就是,通常会有两种办法达成目标:“应急办法”和常规办法:)
实际上我是Grails web的粉丝,我真的很喜欢它并且为Grails写了一些插件。我相信构建传统 web应用方面Grails是最好的框架。但是当我看见采用RESTful构建和一些现代应用之后(大多数是“单页面App”)——我总是会建议使用Spring MVC (+ Groovy,这又是另外一个话题)。
在这个例子中,我们将看到如何使用java.net包实用工具,创建一个访问REST服务RESTful的客户端。当然这不是创建一个RESTful客户端最简单的方法,因为你必须自己读取服务器端的响应,以及Json和Java对象的转换。
请求Get
public class JavaNetURLRESTFulClient {
private static final String targetURL = "http://localhost:8080/JerseyJSONExample/rest/jsonServices/print/Jamie";
public static void main(String[] args) {
try {
URL restServiceURL = new URL(targetURL);
HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL.openConnection();
httpConnection.setRequestMethod("GET");
httpConnection.setRequestProperty("Accept", "application/json");
if (httpConnection.getResponseCode() != 200) {
throw new RuntimeException("HTTP GET Request Failed with Error code : "
+ httpConnection.getResponseCode());
}
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
(httpConnection.getInputStream())));
String output;
System.out.println("Output from Server: \n");
while ((output = responseBuffer.readLine()) != null) {
System.out.println(output);
}
httpConnection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行后输出结果是:
Output from Server: {"id":1,"firstName":"Jamie","age":22,"lastName":"Diaz"}
POST提交:
public class JavaNetURLRESTFulClient {
private static final String targetURL = "http://localhost:8080/JerseyJSONExample/rest/jsonServices/send";
public static void main(String[] args) {
try {
URL targetUrl = new URL(targetURL);
HttpURLConnection httpConnection = (HttpURLConnection) targetUrl.openConnection();
httpConnection.setDoOutput(true);
httpConnection.setRequestMethod("POST");
httpConnection.setRequestProperty("Content-Type", "application/json");
String input = "{\"id\":1,\"firstName\":\"Liam\",\"age\":22,\"lastName\":\"Marco\"}";
OutputStream outputStream = httpConnection.getOutputStream();
outputStream.write(input.getBytes());
outputStream.flush();
if (httpConnection.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ httpConnection.getResponseCode());
}
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
(httpConnection.getInputStream())));
String output;
System.out.println("Output from Server:\n");
while ((output = responseBuffer.readLine()) != null) {
System.out.println(output);
}
httpConnection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
下载地址:http://pan.baidu.com/s/1dD5lhtR
一些有用的链接:
- Spring – http://www.springsource.org/spring-framework
- Spring安全项目,如果你需要使用认证–http://www.springsource.org/spring-security
- 所有Spring项目 – http://www.springsource.org/projects
- 如果真的打算做一个好的RESTful应用,你需要Spring HATEOAS –https://github.com/SpringSource/spring-hateoas
- Spring MVC文档 –http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html
- 一篇使用Spring进行内容交互的好文 –http://blog.springsource.org/2013/05/11/content-negotiation-using-spring-mvc/
原文链接: igorartamonov.com 翻译: ImportNew.com - 唐尤华
译文链接: http://www.importnew.com/5163.html
相关推荐
本教程将通过一个名为"spring-mvc-demo"的项目,详细介绍如何使用Spring框架来实现RESTful Web服务。 一、Spring MVC与RESTful Web服务 Spring MVC是Spring框架的一部分,专门用于处理Web请求和响应。RESTful Web...
用Spring maven做的restful api小Demo 仅供参考 看见有其他大神做的,积分太高了,我来个免积分下载的吧 ,不敢忘挖井人http://blog.csdn.net/u010857795/article/details/54377196 附上...
现在网上大多数关于restful的资料都是spring3,而spring4进行了一些更改,在此处上传一个基本demo供参考,由于此demo使用的IDE是intellj12,使用其它工具的将配置文件、控制器、包拷入使用即可。
2. **Spring MVC与REST**:Spring MVC提供了一套优雅的方式来实现RESTful服务。通过使用`@RestController`注解,我们可以创建处理HTTP请求的控制器类,而`@RequestMapping`、`@GetMapping`、`@PostMapping`等注解则...
这通常包括Spring MVC的核心库,如spring-webmvc,以及与RESTful相关的库,例如Jackson或Gson用于JSON序列化和反序列化,还有可能包含Spring Boot Starter Web,简化了Spring MVC和RESTful的集成。 在标签中,"java...
Spring框架,作为Java生态系统中的中流砥柱,提供了强大的支持来实现RESTful服务。本资料包"spring加载restful(文档+程序源码)"将帮助我们深入理解Spring如何加载和处理RESTful服务,并通过实际的源代码进行学习和...
在Spring CXF中,我们可以轻松地定义这些资源和操作,实现RESTful服务。 1. **配置Spring CXF**:创建一个Spring配置文件,如`cxf-servlet.xml`,在其中定义CXF的Servlet,这样我们就可以在Spring应用上下文中托管...
3. 接下来,我们需要实现Restful API和WebService API接口,使用Spring Boot的Restful API和CXF框架来实现学生信息的增删改查操作。 4. 最后,我们需要测试Restful API和WebService API接口,确保其正常工作。 结论...
【CXF3.0+Spring3.2 RESTFul服务(下)】 在现代Web服务开发中,RESTful API已经成为主流,它通过HTTP协议提供简洁、无状态的接口,易于客户端调用。CXF,一个强大的开源服务框架,支持SOAP和RESTful服务,而Spring...
本文将深入探讨Spring框架如何实现RESTful API,以及这些概念在"springRestful小例子"中的具体应用。 首先,我们要理解什么是RESTful。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发...
本教程将深入探讨如何在Spring环境中集成CXF以实现RESTful WebService接口。 首先,我们需要理解REST(Representational State Transfer)的概念。REST是一种软件架构风格,用于设计网络应用程序。它的核心思想是...
Spring Boot 整合 Mybatis 实现RESTful API ,具体可以查看博客: http://blog.csdn.net/yaozhiqi1905658804/article/details/70820892
在 Spring 框架中,我们可以使用 Spring MVC 来实现 RESTful API。以下步骤介绍了如何设置: - **步骤 1**: 配置 Tomcat 服务器。参考指定的博客文章来安装和配置。 - **步骤 2**: 添加 Maven 依赖。确保 pom.xml ...
**Spring Boot RESTful API Demo** 在现代Web开发中,RESTful API已经成为构建可扩展、松耦合服务的主要方式。Spring Boot作为Java生态系统中的一个强大框架,简化了创建生产级的基于Spring的应用程序。本示例将...
12. **安全性**: Spring Security可以用来保护RESTful服务,实现身份验证和授权,如OAuth2或JWT(JSON Web Tokens)。 13. **API版本控制**: 可以通过URL路径或请求头来实现API的版本控制,以适应API的变化。 在...
在IT行业中,Spring框架是Java开发领域...下载后,开发者可以直接运行该项目,以了解Spring发布RESTful服务的具体实现。通过实践和学习,开发者可以快速掌握Spring MVC创建REST服务的技巧,进一步提升自己的开发能力。
在这个“Spring Boot RESTful 接口示例项目”中,我们可以学习到如何使用 Spring Boot 创建 RESTful 风格的 API。RESTful API 通常通过 HTTP 协议提供服务,利用 GET、POST、PUT、DELETE 等方法操作资源,实现客户端...
Spring Boot 2精髓带书签目录高清版,文字可复制,内容丰富,涵盖Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性,包括使用Spring实现RESTful架构,在...
另一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot实现分布式架构,也会在本书后半部分介绍,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、...
本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。 本文假定您是熟悉REST基本知识的。 Spring 3的REST支持 ...