Restlet 2.3 指南

article/2025/9/21 10:02:15

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#Restlet 2.3 指南


#1. Restlet概述

Restlet框架由两个主要部分构成。首先,一部分是"Restlet API",是一个中立的,支持REST概念,并能促进客户端、服务器端应用程序的调用处理机制的API。这个API由Restlet引擎支持,而且Restlet API和Restlet Engine现在都封装在一个单独的JAR文件中("org.restlet.jar")。 restlet framework overview image 这样的API和实现的分离关系有点类似于Servlet API和Web容器(比如Jetty或者Tomcat)的关系,也类似于JDBC API和JDBC驱动包的关系。

#2. 获取一个网页的内容

正如我们在导论论文中提到的,Restlet框架既是客户端框架,同时也是服务器端框架。比如说,Restlet可以很容易通过它的HTTP客户端连接器(connector)处理远程资源。一个REST的连接器是其软件的一个组成部分,能够提供不同组件(Component)之间交流的功能,通常通过实现一个网络协议的一端来实现这个功能。Restlet提供了多种基于现存的开源项目的连接器的实现。连接器部分列出了所有可用的客户端、服务器端连接器并解释了应该如何使用和配置它们。

下面我们将获取一个已经存在资源内容的表达(Representation)并把它输出到JVM的控制台里:

// Outputting the content of a Web page
new ClientResource("http://restlet.org").get().write(System.out);

请注意:上述例子使用了简化的方式,通过ClientResource类来发出调用。如果你需要多线程或者需要加强对其的控制,你可以直接操作客户端连接器类对象或者请求对象(Request)。下面的例子告诉我们如何对客户端请求进行一些设置,例如引用地址。它(配置)也可以是你在回应中希望得到的语言或者媒体类型。

// Create the client resource
ClientResource resource = new ClientResource("http://restlet.org");// Customize the referrer property
resource.setReferrerRef("http://www.mysite.org");// Write the response entity on the console
resource.get().write(System.out);

3. 监听浏览器请求

现在,我们想看看Restlet框架如何监听浏览器请求并回复的。我们会使用内部的Restlet HTTP服务器连接器(当然我们可以使用Jetty这些服务器)并返回一个简单的字符串资源的表达:"hello, world"字符串。注意:Part03类继承了由Restlet提供的基类ServerResource类:

public class Part03 extends ServerResource {public static void main(String[] args) throws Exception {// Create the HTTP server and listen on port 8182new Server(Protocol.HTTP, 8182, Part03.class).start();}@Getpublic String toString {return "hello, world";}
}

如果你运行这段代码,运行服务器,你可以打开一个网页浏览器并点击http://localhost:8182。实际上,任何的URI都可以,再试试http://localhost:8182/test/tutorial。注意:如果你在不同的机器上测试这个服务器(程序),你会需要把"localhost"替换成服务器地址,如果有域名的话替换成域名。

迄今为止,我们已经通过ClientResource类和ServerResource类展示给你了Restlet API的最高层次的抽象。但随着我们继续前进,你会发现那两个类被很多API函数支持,使你能够操作所有REST功能。

4. REST结构概述

让我们回退一点,从REST角度考虑一个典型的web结构。如下图所示,小方块表现了使组件之前能够交流的连接器,组件由大盒子表现。连线描述了在实际交流中使用的特定的协议(HTTP, SMTP, 等等)。

REST architecture

注意:同一组件上可以有任意数目的客户端连接器和服务器连接器。比如Web Server B,具有服务器连接器用以响应从User Agent组件的请求,也具有客户端连接器,用以向Web Server A和Mail Server发送请求。

5. 组件、虚拟主机和应用程序

Restlet框架不仅可以像之前所演示的,能够支持标准的REST软件结构,而且它也提供了一系列的类,可以极大的简化在单一的一个JVM里部署多个应用程序的功能。Restlet API的目标是提供一个RESTful,易于移植,并且比现有Servlet API更加灵活的替代品。在下面的图表中,我们可以看到三种不同的Restlet用来处理如此复杂的情况。组件能够管理多个虚拟主机和应用程序。

虚拟主机可以提供灵活的配置,比如说多个域名共享一个IP,或者一个域名使用多个IP用于负载平衡。最终,我们使用应用程序们来管理一系列相关Restlet对象,资源对象,表达对象。除此之外,应用程序们要具有可移植、可重新配置的特点,即可以轻易的切换成不同的Restlet实现有不同的虚拟主机。而且,它们提供了一些重要的服务,比如记录访问日志、自动解析请求内容实体、可配置的状态页设置和其它服务!

Components, virtual hosts and applications

为了解释这些类,让我们来看一个简单的例子。这里我们创建一个Component对象,然后给它添加一个HTTP服务器连接器,监听8182端口。现在我们创建一个简单的追踪请求信息用的Restlet,并把它放在这个Component默认的虚拟主机这里。这个默认的虚拟主机只是抓取所有的请求对象,并不把它们转向到一个声明好的虚拟主机对象那里(详见Component.hosts属性)。在偏后的例子,我们也引入Application类的使用。注意:现在在控制台你是看不到日志信息的。

public static void main(String[] args) throws Exception {public static void main(String[] args) throws Exception {// Create a new Restlet component and add a HTTP server connector to itComponent component = new Component();component.getServers().add(Protocol.HTTP, 8182);// Then attach it to the local hostcomponent.getDefaultHost().attach("/trace", Part05.class);// Now, let's start the component!// Note that the HTTP server connector is also automatically started.component.start();}@Getpublic String toString() {// Print the requested URI pathreturn "Resource URI  : " + getReference() + '\n' + "Root URI      : "+ getRootRef() + '\n' + "Routed part   : "+ getReference().getBaseRef() + '\n' + "Remaining part: "+ getReference().getRemainingPart();}
}

现在,我们在浏览器里输入http://localhost:8182/trace/abc/def?param=123来测试一下。你应该会得到下面的结果:

Resource URI  : http://localhost:8182/trace/abc/def?param=123
Root URI      : http://localhost:8182/trace
Routed part   : http://localhost:8182/trace
Remaining part: /abc/def?param=123

转载于:https://my.oschina.net/lisanhu2015/blog/209019


http://chatgpt.dhexx.cn/article/HcIg8N1V.shtml

相关文章

minio用法

1 Minio是在Apache License v2.0下发布的对象存储服务器。它与Amazon S3云存储服务兼容。 它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM映像。对象的大小可以从几KB到最大5TB。 Minio服务器足够轻&#xff0c…

minio使用

一、介绍 开源协议的对象存储服务,轻量,性能强 二、安装 windows版链接: https://pan.baidu.com/s/1vv2p8bZBeZFG9cpIhDLVXQ?pwds5dd 提取码: s5dd 下载后创建minioData文件用于储存文件 创建run.bat脚本,内容如下 # 设置用户名 set MINIO_ROOT_USERadmin # …

CentOS Minimal 和 NetInstall 版本区别

Index of /centos/7.9.2009/isos/x86_64/ 如图: BinDVD版——就是普通安装版,需安装到计算机硬盘才能用,bin一般都比较大,而且包含大量的常用软件,安装时无需再在线下载(大部分情况)。 minim…

简易最小化虚拟机安装配置(CentOS-7-Minimal)

文章目录 镜像选择虚拟机安装(VMware Workstation)虚拟网络配置(NAT模式)虚拟网卡配置 虚拟机配置静态IP配置及测试系统初始化及库安装停止防火墙 & 关闭防火墙自启动关闭 selinux 防火墙更换镜像源并重建镜像源缓存安装 ifco…

pr双击打开图标没反应,下载ZXPSignLib-minimal.dll替换

微智启今天安装了pr cc2018,双击打开图标无反应 于是又试了Premiere cc2019,还是没反应 桌面还多出一些白色文件图标.crash结尾的 解决方案: 下载ZXPSignLib-minimal.dll文件,微智启软件工作室放到pr安装目录的根目录&#xff…

Minimal Square

文章目录 一、A. Minimal Square总结 一、A. Minimal Square 本题链接:A. Minimal Square 题目: A. Minimal Square time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Find the minimu…

出现minimal bash-like...的问题如何解决?

2021.9.4写下此文,以备查阅。 问题如图: 一般出现这个界面即为引导程序出现问题,根据下面两种情况看待: 卸载双系统之一(比如之前是windeepin双系统,现在卸载了deepin系统)重启时出现。安装新…

Centos教程,DVD、Everything、Minimal、NetInstall区别

今天给大家讲述一下在官网下载Linux中Centos7的时候遇到的版本问题。首先给大家简述一下Centos下载流程。 1.百度搜索Centos,点击官网。 2.点击Download,选择Centos7(举例)。 3.然后这里我们选择aliyun下载。 4.选择第一个镜像版本…

【已解决】grub引导项修复:Minimal BASH-like line editing is supported.

目录 1 问题背景2 问题探索3 问题解决4 告别Bug 1 问题背景 环境: Win10Ubuntu20.04 现象:双系统电脑向移动硬盘安装Ubuntu系统后,重启黑屏并显示Minimal BASH-like line editing is supported. For the first word, TAB lists possible comm…

Centos7 Minimal 版本基本配置记录

每次搭测试环境之前都需要先装一台干净的虚拟机,然而 Centos7 Minimal 版本快速装完之后还需要配置:网络、国内源、一些基础工具(net-tools、vim)等才能远程连接和使用。记录一下,方便下次快速配置使用。 目录 1、网…

详解Minimal Web API的使用

一、简介 “Minimal API 是为了创建具有最小依赖关系的 HTTP API”,这是官方的解释。什么意思呢,创建一个 API 并不需要加载许多的依赖。平时在开发 ASP.NET Core Web API 时,通常需要创建 Controller 来定义我们的 API 这种方式&#xff0c…

实例分割------Yolact-minimal结构详解

yolact结构图 网络backbone可以采用resnet101,resnet50甚至vgg16等。然后有3个分支,1个分支输出目标位置,1个分支输出mask系数,1个分类的置信率,所以决定目标的有4(位置)+k(mask系数)+c(分类置信率)个参数。 检测的大致步骤为: 1.从backbone中取出C3,C4,C5; 2.通…

VMware16安装CentOS 7.9操作系统(Minimal版)

记录:299 场景:使用VMware16安装CentOS 7.9操作系统。 基础环境: 虚拟机:VMware16 操作系统:CentOS 7.9 镜像包:CentOS-7-x86_64-DVD-2009.iso 镜像下载地址: 阿里地址:https…

ISO文件boot、dvd、minimal的区别

在centos的下载中,有分为boot、dvd、minimal的iso文件,那么他们之间有什么区别呢? boot.iso 这个版本大小不会超过1G ,只有最基本的启动引导等内容,各类包均需从线上下载,需要快速安装且有可靠网络的前提下&#xff0c…

【minimal problem】资料整理

minimal problem use as few data as to generate a system of algebraic equaIons with a finite number of soluIons 使用尽可能少的数据来生成代数系统 解数有限的方程 以往工作 基于神经网络解一元高次方程 代码实战:解低次方程 代码实战:解高次方…

自我总结:Centos7-Minimal安装后应该干什么

首先我是只小菜鸟,还不是很熟练,我也是弄了N次之后才开始慢慢总结这么一点经验 刚安装完成 ifconfig 和yum命令是不能用的,需要修改配置文件 我是直接将其设置为静态IP 首先点“编辑”-“虚拟机网络编辑器”-“VMnet8”,把下面的东西取消…

手把手教你centos minimal如何安装图形界面!

网上对于centos minimal安装图形界面的介绍五花八门,每个人遇到的情况都不一样,不能一味跟着别人的介绍来往下走,不过多看几篇博文视频,多踩踩坑涨涨经验才知道到底哪种解决方案才是最适用于自己的情况的,也是好事一桩…

安装CentOS7 Minimal后,如何安装可视化图形界面?

安装CentOS7 Minimal后,如何安装可视化图形界面? 附:Centos7各版本的阿里云镜像下载地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 建议下载everything版本,安装时功能选择项较为全面,本文…

二手笔记本中常见三叉插头以及英标欧标和美标的区别!

本文转载至:http://www.litaow.com/yingjian/2013/0616/1042.html 一些原装笔记本电脑中带的插头看起来都有点不一样,就如图中同一款的T420机型在不同的国家地区发售出现的插头不同,主要的原因还是国家和地区的不一样使用的这种插头标准是有区…

计算机改显存会有啥影响,显卡显存越大越好吗?显存对电脑速度的影响有哪些?...

对于刚接触DIY领域的小白玩家来说,衡量显卡性能的指标就是GPU芯片和其频率,这也确实是显卡性能的决定性因素。但除了GPU,还有一个对显卡性能影响较大的部分,那就是显存。 显卡显存越大越好吗?显存对电脑速度的影响 显存有很多指标:类型、容量、带宽、位宽、速率等,这些指…