分布式计算第四周实验:RESTful Webservice 编程

    xiaoxiao2023-03-25  3

    课程地址

    http://ss.sysu.edu.cn/~pml/dct/4_restful_webservice.html

    实验内容

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

    输入:URL

    输出:Json或者XML(资源文件)

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

    @GET // HTTP协议方法,表示请求数据 @Path("/customers/{id}/") //项目根访问该方法的 URI 路径,其中 {id} 是一个变量模板 // 参数 String id 前的 @PathParam("id")表示该参数的输入由URL中的路径参数来。 public Customer getCustomer(@PathParam("id") String id) { // ... }

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

    简述 GET 与 POST 的区别

    功能GETPOST主要用途从指定的资源请求数据向指定的资源提交要被处理的数据历史参数保留在浏览器历史中参数不会保留在浏览器历史或Web服务器日志中数据长度限制当发送数据时,GET 方法向 URL 添加数据;在不同浏览器中URL的长度限制是不同的。无限制安全性较差,因为提交的数据是URL的一部分比GET安全

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

    会。单实例类必须是多线程友好的。必须考虑类中实例变量(Field)线程共享问题。

    Spring IOC 与 DI 是 java 编程核心内容之一。阅读 Spring IoC 使用详解 用自己的语言解释 IoC 解耦原理。

    在项目中加入了容器,容器会实例化对象。通过在beans.xml文件中配置beans来为容器提供依赖注入的。容器会自动为组件推送资源。

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

    建立空白(不是Web)的maven项目,复制Spring IoC 使用详解中的代码。代码结构如下(beans放在resources下)

    并修改QuizProgram中的代码如下

    public class QuizProgram { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); QuizMasterService obj = (QuizMasterService)context.getBean("quizMasterService"); obj.askQuestion(); } }

    运行即得结果

    在 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" />

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

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

    Web Application Description Language

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

    Accept

    JAX-RS 的全称

    Java API for RESTful Services

    @Produces 和 @Consumes 的作用

    @Produces 用于指定输出格式,参数可以是字符串数组。 如果是一个数组,第一个是默认输出格式。如果客户端指定输出,则会匹配其他输出@Consumes 指定处理输入媒体的类型,例如 “Content-Type: application/json”。

    (!)请完成 实验3 的每个参数处理的内容,然后在 jesery 上完成类似工作。请描述两个平台是否完全兼容?简述不兼容的内容。

    转载请注明原文地址: https://ju.6miu.com/read-1203946.html
    最新回复(0)