`

Spring实现RESTful

阅读更多
 
//这个示例使用了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
}
}

 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

一些有用的链接:

原文链接: igorartamonov.com 翻译: ImportNew.com - 唐尤华
译文链接: http://www.importnew.com/5163.html

分享到:
评论

相关推荐

    Spring实现RESTful Web 服务Demo

    本教程将通过一个名为"spring-mvc-demo"的项目,详细介绍如何使用Spring框架来实现RESTful Web服务。 一、Spring MVC与RESTful Web服务 Spring MVC是Spring框架的一部分,专门用于处理Web请求和响应。RESTful Web...

    用Spring maven做的restful api小Demo 仅供参考 Spring实现RESTful Web 服务Demo

    用Spring maven做的restful api小Demo 仅供参考 看见有其他大神做的,积分太高了,我来个免积分下载的吧 ,不敢忘挖井人http://blog.csdn.net/u010857795/article/details/54377196 附上...

    spring4.1 restful实现

    现在网上大多数关于restful的资料都是spring3,而spring4进行了一些更改,在此处上传一个基本demo供参考,由于此demo使用的IDE是intellj12,使用其它工具的将配置文件、控制器、包拷入使用即可。

    spring mvc restful service

    2. **Spring MVC与REST**:Spring MVC提供了一套优雅的方式来实现RESTful服务。通过使用`@RestController`注解,我们可以创建处理HTTP请求的控制器类,而`@RequestMapping`、`@GetMapping`、`@PostMapping`等注解则...

    Spring+restful.zip

    这通常包括Spring MVC的核心库,如spring-webmvc,以及与RESTful相关的库,例如Jackson或Gson用于JSON序列化和反序列化,还有可能包含Spring Boot Starter Web,简化了Spring MVC和RESTful的集成。 在标签中,"java...

    spring加载restful(文档+程序源码).zip

    Spring框架,作为Java生态系统中的中流砥柱,提供了强大的支持来实现RESTful服务。本资料包"spring加载restful(文档+程序源码)"将帮助我们深入理解Spring如何加载和处理RESTful服务,并通过实际的源代码进行学习和...

    Spring CXF Restful 实例

    在Spring CXF中,我们可以轻松地定义这些资源和操作,实现RESTful服务。 1. **配置Spring CXF**:创建一个Spring配置文件,如`cxf-servlet.xml`,在其中定义CXF的Servlet,这样我们就可以在Spring应用上下文中托管...

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    3. 接下来,我们需要实现Restful API和WebService API接口,使用Spring Boot的Restful API和CXF框架来实现学生信息的增删改查操作。 4. 最后,我们需要测试Restful API和WebService API接口,确保其正常工作。 结论...

    CXF3.0+Spring3.2 RESTFul服务(下)

    【CXF3.0+Spring3.2 RESTFul服务(下)】 在现代Web服务开发中,RESTful API已经成为主流,它通过HTTP协议提供简洁、无状态的接口,易于客户端调用。CXF,一个强大的开源服务框架,支持SOAP和RESTful服务,而Spring...

    springRestful小例子

    本文将深入探讨Spring框架如何实现RESTful API,以及这些概念在"springRestful小例子"中的具体应用。 首先,我们要理解什么是RESTful。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发...

    cxf集成Spring的restful WebService接口

    本教程将深入探讨如何在Spring环境中集成CXF以实现RESTful WebService接口。 首先,我们需要理解REST(Representational State Transfer)的概念。REST是一种软件架构风格,用于设计网络应用程序。它的核心思想是...

    Spring Boot + Mybatis 整合实现RESTful API

    Spring Boot 整合 Mybatis 实现RESTful API ,具体可以查看博客: http://blog.csdn.net/yaozhiqi1905658804/article/details/70820892

    基于 Java Spring 将上述类的方法对外提供 RESTful 服务并调用

    在 Spring 框架中,我们可以使用 Spring MVC 来实现 RESTful API。以下步骤介绍了如何设置: - **步骤 1**: 配置 Tomcat 服务器。参考指定的博客文章来安装和配置。 - **步骤 2**: 添加 Maven 依赖。确保 pom.xml ...

    Spring boot restful api demo

    **Spring Boot RESTful API Demo** 在现代Web开发中,RESTful API已经成为构建可扩展、松耦合服务的主要方式。Spring Boot作为Java生态系统中的一个强大框架,简化了创建生产级的基于Spring的应用程序。本示例将...

    spring4 restful web

    12. **安全性**: Spring Security可以用来保护RESTful服务,实现身份验证和授权,如OAuth2或JWT(JSON Web Tokens)。 13. **API版本控制**: 可以通过URL路径或请求头来实现API的版本控制,以适应API的变化。 在...

    spring 发布restful 服务

    在IT行业中,Spring框架是Java开发领域...下载后,开发者可以直接运行该项目,以了解Spring发布RESTful服务的具体实现。通过实践和学习,开发者可以快速掌握Spring MVC创建REST服务的技巧,进一步提升自己的开发能力。

    spring boot restful 接口示例项目

    在这个“Spring Boot RESTful 接口示例项目”中,我们可以学习到如何使用 Spring Boot 创建 RESTful 风格的 API。RESTful API 通常通过 HTTP 协议提供服务,利用 GET、POST、PUT、DELETE 等方法操作资源,实现客户端...

    Spring Boot 2精髓带书签目录高清版

    Spring Boot 2精髓带书签目录高清版,文字可复制,内容丰富,涵盖Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性,包括使用Spring实现RESTful架构,在...

    spring Boot 2 精髓

    另一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot实现分布式架构,也会在本书后半部分介绍,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、...

    spring加载restful(文档+程序源码)

     本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。  本文假定您是熟悉REST基本知识的。  Spring 3的REST支持 ...

Global site tag (gtag.js) - Google Analytics