分布式计算学习笔记之四:RESTfulWebservice 编程

来源:互联网 发布:域名注册实名认证 编辑:程序博客网 时间:2024/06/07 08:24

1. RESTful Webservice 作为远程调用(RPC),它的输入是什么?输出是什么?

输入时GETPOSTPUTDELETE;输出是PRODUCE

2. 有一个 Java 远程函数声明 public Customer getCustomer(String id),把HTTP 协议输入/输出映射到该函数,至少要申明(annotation)哪些信息?请写出这些annotation,并简单解释协议与函数的关系。

@GET@Path(“customers/{id}”).协议类似于一个接口,让客户端的函数与服务端交互的时候,有一个统一的标准,常见的协议方法有GETPOSTPUTDELETE等,@Path(“/customers/{id}/”)项目根访问该方法的 URI路径,其中 {ID}是一个变量模板, @PathParam(“id”)可以获取该变量。

3. 修改 实验1 @Path@Path(“/myservice/”),请用curl -v 给出结果

修改路径,

 

 

命令行下,curl -v http://localhost:9000/myservice/customers/123

结果如下:

 

4. 简述 GET POST 的区别

GET用于获取信息,不会修改服务端的数据,是数据安全的;POST可以向服务端发送修改请求,从而修改服务端的数据。

5. 在实际应用中 Map<Long, Customer> customers使用会产生副作用吗?为什么?

实际应用中可能会产生副作用,例如customerid不唯一时,会导致识别错误,又或者在customer数据被删除后,关联数据不能及时删除。

6. Spring IOC DIjava编程核心内容之一。阅读 Spring IoC使用详解 用自己的语言解释IoC 解耦原理。

传统应用程序需要客户端主动去创建用户类,用户信息类,并将用户信息类注入到用户类。有了IoC容器后,上述工作就由IoC完成,并且由IoC来管理它们的生命周期。这意味着,创建和查找依赖的控制权交给了容器,由容器进行注入组合对象,所以对象和对象之间是松散耦合,便于测试和功能复用。

 

7. (!)使用 Maven 构建(6)给出的案例,项目名称IOC_test

8.  Spring 试验中, 阅读 beans.xml, 写出申明根资源的关键内容

  <jaxrs:server id="customerService" address="/service1">

        <jaxrs:serviceBeans>

          <ref bean="customerBean" />

        </jaxrs:serviceBeans>

  </jaxrs:server>

 

  <bean id="customerBean" class="demo.jaxrs.server.CustomerService" />

 

9. (!)尝试写一个根资源类 Hello,用GET 方法实现String SayHello() 远程服务。请给出Hello类代码,增加根资源的配置(不是修改)XML内容,curl测试结果。

package com.example.jaxrs;

@javax.ws.rs.Path("exampleWithInjection")public class StringResource {

    public StringResource() {

        /* use a no-argument constructor */

    }

 

    @javax.ws.rs.core.Context

    private javax.ws.rs.core.HttpHeaders httpHeaders;

 

    @javax.annotation.PostConstruct

    private void myPostConstruct() {

        /* read from the httpHeaders if required */

    }

 

    @javax.ws.rs.GET

    @javax.ws.rs.Produces(javax.ws.rs.core.MediaType.TEXT_PLAIN)

    public String SayHello() {

        return "Hello world!";

    }}

 

 

 

10. WADL 的全称。从程序结果返回中截取一段 WADL内容。

Web Application Description Language

 

11. 输出对象格式协商是 Resquest Header 段的哪个Field 决定的?

Content-Type

12. JAX-RS 的全称

Java API for RESTful Web Services

@Produces @Consumers的作用

@Produces用于指定输出格式,参数可以是字符串数组;@Consumers指定处理输入媒体的类型,例如 “Content-Type: application/json”。

0 0
原创粉丝点击