api to get all services and apps
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
index 1776fb1..0b48ec0 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
@@ -17,6 +17,7 @@
 
 package org.apache.dubbo.admin.controller;
 
+import com.ctrip.framework.apollo.core.enums.Env;
 import com.google.gson.Gson;
 import org.apache.dubbo.admin.common.util.ConvertUtil;
 import org.apache.dubbo.admin.model.domain.Consumer;
@@ -26,7 +27,6 @@
 import org.apache.dubbo.admin.service.ConsumerService;
 import org.apache.dubbo.admin.service.ProviderService;
 import org.apache.dubbo.admin.common.util.Constants;
-import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
 import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,7 +38,7 @@
 
 
 @RestController
-@RequestMapping("/api/{env}/service")
+@RequestMapping("/api/{env}")
 public class ServiceController {
 
     private final ProviderService providerService;
@@ -50,7 +50,7 @@
         this.consumerService = consumerService;
     }
 
-    @RequestMapping(method = RequestMethod.GET)
+    @RequestMapping( value = "/service", method = RequestMethod.GET)
     public Set<ServiceDTO> searchService(@RequestParam String pattern,
                                          @RequestParam String filter,@PathVariable String env) {
         return providerService.getServiceDTOS(pattern, filter, env);
@@ -58,7 +58,7 @@
 
 
 
-    @RequestMapping(value = "/{service}", method = RequestMethod.GET)
+    @RequestMapping(value = "/service/{service}", method = RequestMethod.GET)
     public ServiceDetailDTO serviceDetail(@PathVariable String service, @PathVariable String env) {
         service = service.replace(Constants.ANY_VALUE, Constants.PATH_SEPARATOR);
         List<Provider> providers = providerService.findByService(service);
@@ -84,4 +84,14 @@
         }
         return serviceDetailDTO;
     }
+
+    @RequestMapping(value = "/services", method = RequestMethod.GET)
+    public Set<String> allServices(@PathVariable String env) {
+        return providerService.findServices();
+    }
+
+    @RequestMapping(value = "/applications", method = RequestMethod.GET)
+    public Set<String> allApplications(@PathVariable String env) {
+        return providerService.findApplications();
+    }
 }
diff --git a/dubbo-admin-frontend/src/components/ServiceSearch.vue b/dubbo-admin-frontend/src/components/ServiceSearch.vue
index 293c6ce..6d42be3 100644
--- a/dubbo-admin-frontend/src/components/ServiceSearch.vue
+++ b/dubbo-admin-frontend/src/components/ServiceSearch.vue
@@ -312,18 +312,19 @@
         pattern = 'service'
         this.search(this.filter, pattern, true)
       }
-      this.$axios.get('/service', {
-        params: {
-          pattern: 'service',
-          filter: '*'
-        }
-      }).then(response => {
-        let length = response.data.length
-        for (let i = 0; i < length; i++) {
-          vm.serviceItem.push(response.data[i].service)
-          vm.appItem.push(response.data[i].appName)
-        }
-      })
+      this.$axios.get('/services')
+        .then(response => {
+          if (response.status === 200) {
+            vm.serviceItem = response.data
+          }
+        })
+
+      this.$axios.get('/applications')
+        .then(response => {
+          if (response.status === 200) {
+            vm.appItem = response.data
+          }
+        })
     }
 
   }