1. non-simplify mode:
```
dubbo://120.0.0.1:20880/org.apache.dubbo.demo.DemoService?key=value
```
the store path of ZK will be: `/dubbo/porg.apache.dubbo.demo.DemoService/url`

2. simplify mode:
```
dubbo://120.0.0.1:20880/org.apache.dubbo.demo.DemoService?key=value
```
the store path of ZK will be: `/dubbo/porg.apache.dubbo.demo.DemoService/url`

3. simplify mode with path specified:
```
dubbo://120.0.0.1:20880/path-value?key=value
```
the store path of ZK will be: `/dubbo/path-value/url`
private Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getExtension("rest");
    private ProxyFactory proxy = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
    private final int availablePort = NetUtils.getAvailablePort();
    private final URL exportUrl = URL.valueOf("rest://127.0.0.1:" + availablePort + "/rest");
    @AfterEach
    public void tearDown() {
        protocol.destroy();
    }
    @Test
    public void testRestProtocol() {
        URL url = URL.valueOf("rest://127.0.0.1:5342/rest/say?version=1.0.0");
        DemoServiceImpl server = new DemoServiceImpl();
        ProviderModel providerModel = new ProviderModel(url.getServiceKey(), server, DemoService.class);
        ApplicationModel.initProviderModel(url.getServiceKey(), providerModel);
        Exporter<DemoService> exporter = protocol.export(proxy.getInvoker(server, DemoService.class, url));
        Invoker<DemoService> invoker = protocol.refer(DemoService.class, url);
        Assertions.assertFalse(server.isCalled());
        DemoService client = proxy.getProxy(invoker);
        String result = client.sayHello("haha");
        Assertions.assertTrue(server.isCalled());
        Assertions.assertEquals("Hello, haha", result);
        invoker.destroy();
        exporter.unexport();