Restlet Protocol.FILE 用法
Restlet Protocol.FILE usage
我有一个关于 Protocol.FILE
在 Restlet 站点 example 中的用法的问题
// URI of the root directory.
public static final String ROOT_URI = "file:///c:/restlet/docs/api/";
[...]
// Create a component
Component component = new Component();
component.getServers().add(Protocol.HTTP, 8182);
component.getClients().add(Protocol.FILE);
// Create an application
Application application = new Application() {
@Override
public Restlet createInboundRoot() {
return new Directory(getContext(), ROOT_URI);
}
};
// Attach the application to the component and start it
component.getDefaultHost().attach(application);
component.start();
为什么需要将 Protocol.FILE
添加到客户端连接器列表中才能提供 directory/file 内容?
只是因为您在 ROOT_URI
变量中使用了此协议 ;-) 关于协议,您需要在创建 Restlet 组件时显式添加它们。客户端连接器提供了一种使用协议访问资源(本地或远程)的方法。
以下是有关幕后情况的更多详细信息:
在类路径中添加 Restlet 扩展时,一些元素会在引擎中注册。您可以拥有转换器、服务器连接器、客户端连接器……您可以看到在 Engine
本身的实例上注册的内容:
List<ConnectorHelper<Client>> clientConnectors
= Engine.getInstance().getRegisteredClients();
for (ConnectorHelper<Client> clientConnector : clientConnectors) {
System.out.println(clientConnector);
}
关于客户端连接器,它们对应于能够处理特定协议的实体。例如,Jetty 扩展提供了一个客户端连接器,用于基于 Jetty 客户端 API.
执行 HTTP 和 HTTPS 请求
- 要真正使用这些已注册的客户端连接器,您需要通过指定要使用的协议来启用它们。例如,如果您添加
HTTP
协议,Restlet 将在已注册连接器列表中找到第一个能够处理此协议的客户端连接器。为了执行 HTTP 请求,它将使用此连接器。如果没有可用的连接器,它会抛出异常...
在您的例子中,FILE
协议的客户端连接器由 Restlet 核心本身提供,因此它会自动注册。但是你需要明确地告诉Restlet你想使用这个协议。
希望对你有帮助,
蒂埃里
我有一个关于 Protocol.FILE
在 Restlet 站点 example 中的用法的问题
// URI of the root directory.
public static final String ROOT_URI = "file:///c:/restlet/docs/api/";
[...]
// Create a component
Component component = new Component();
component.getServers().add(Protocol.HTTP, 8182);
component.getClients().add(Protocol.FILE);
// Create an application
Application application = new Application() {
@Override
public Restlet createInboundRoot() {
return new Directory(getContext(), ROOT_URI);
}
};
// Attach the application to the component and start it
component.getDefaultHost().attach(application);
component.start();
为什么需要将 Protocol.FILE
添加到客户端连接器列表中才能提供 directory/file 内容?
只是因为您在 ROOT_URI
变量中使用了此协议 ;-) 关于协议,您需要在创建 Restlet 组件时显式添加它们。客户端连接器提供了一种使用协议访问资源(本地或远程)的方法。
以下是有关幕后情况的更多详细信息:
在类路径中添加 Restlet 扩展时,一些元素会在引擎中注册。您可以拥有转换器、服务器连接器、客户端连接器……您可以看到在
Engine
本身的实例上注册的内容:List<ConnectorHelper<Client>> clientConnectors = Engine.getInstance().getRegisteredClients(); for (ConnectorHelper<Client> clientConnector : clientConnectors) { System.out.println(clientConnector); }
关于客户端连接器,它们对应于能够处理特定协议的实体。例如,Jetty 扩展提供了一个客户端连接器,用于基于 Jetty 客户端 API.
执行 HTTP 和 HTTPS 请求
- 要真正使用这些已注册的客户端连接器,您需要通过指定要使用的协议来启用它们。例如,如果您添加
HTTP
协议,Restlet 将在已注册连接器列表中找到第一个能够处理此协议的客户端连接器。为了执行 HTTP 请求,它将使用此连接器。如果没有可用的连接器,它会抛出异常...
在您的例子中,FILE
协议的客户端连接器由 Restlet 核心本身提供,因此它会自动注册。但是你需要明确地告诉Restlet你想使用这个协议。
希望对你有帮助, 蒂埃里