Californium CoAP 路径参数

Yas*_*uge 5 eclipse coap iot

我正在使用 Eclipse Californium 处理 CoAP 应用程序,我需要使用 URL 传递参数,就像我们在 Restful Web 服务中所做的那样。是否可以在 californium coap 实现中做到这一点,如果可以,请告诉我如何做到这一点。前任:

coap://localhost:5683/foo/{fooID}
Run Code Online (Sandbox Code Playgroud)

小智 3

简短的回答是,是的,你可以做到。

正如 JavaDocs 中所述

  • 当请求到达服务器时,{@link ServerMessageDeliverer} 在资源树中搜索目标资源。它通过查找目标 URI 的一个又一个元素并在每个元素上调用方法 {@link #getChild(String)} 沿资源树向下移动。允许重写此方法并返回任意资源。例如,这允许使用通配符提供 URI,或将请求委托给同一资源的任何子 URI。

所以基本上你必须覆盖org.eclipse.californium.core.server.ServerMessageDeliverer中的DeliverRequestfindResource方法,以便返回处理请求的适当资源。此外,还需要将 Exchange 请求 UriPath 分析为资源句柄GET/PUT/POST/等的一部分以获取路径变量(这可以通过使用CoapExchange.advanced().getRequest().getOptions().getUriPath() 来完成)

根据 Californium 的源代码,覆盖请求交付者的默认行为应该非常容易。

祝你好运!