如何在CoAP的Resource类中获取客户端写入的uri_path名称
解决方法
要获取资源注册的URI路径,你需要在Resource实例化时将路径传递给类内部保存——request.uri_path返回的是客户端请求的路径,而我们需要的是当前资源绑定的注册路径。具体实现如下:
修改Resource类
class Humidity(resource.Resource): def __init__(self, uri_path): super().__init__() self.uri_path = uri_path # 保存注册的URI路径 async def render_post(self, request): payload = request.payload.decode("ascii") print("Received message: ", payload, "from", self.uri_path) return aiocoap.Message(code=CHANGED, payload=b"ACK")
实例化资源时传递路径
root.add_resource(('humidity_sensor1_indus',), Humidity('humidity_sensor1_indus'))
这样就能在打印时输出该资源对应的注册URI路径。如果同一个Resource类需要注册到多个不同路径,只需在实例化时传入对应路径即可,每个实例会独立保存自己的路径信息。
内容的提问来源于stack exchange,提问作者Tasbiha
相关产品推荐
相关产品推荐

