1. 程式人生 > >Playframework2.2.x中路由接受可變長引數例子

Playframework2.2.x中路由接受可變長引數例子

這段時間寫play框架的webservice,遇到了一個問題,就是我們提供的webservice,甲方需要對我們的webservice進行服務狀態的檢測,大家都知道,play裡面函式引數和路由引數是繫結的,函式有幾個引數,路由就必須有幾個引數。甲方的要求是:當我們什麼引數都不傳入的時候你們也要能返回狀態200即可,表示服務正常,怎麼解決?看了play的文件你會發現,我們可以變相的的解決這個問題,看下面例子:

GET   /WS/addNode    sourceDirWS.controllers.MainService.addNode(parentNodeId:String ?="",nodeName:String ?="")
我們這裡可以看到,一般的路由表這麼寫:
GET   /WS/addNode    sourceDirWS.controllers.MainService.addNode(parentNodeId:String,nodeName:String)
這裡我們只需要在型別後面加上  ?="" 即可,是不是很簡單,這樣別人就可以這麼寫請求,在不加引數前提下也能正常通過路由來呼叫函式 addNode(String parentId,String nodeName)

http://xx.xxx.xx.xx:9000/WS/addNode

我們再看一下函式體:

public static Result addResourceNode(String parentNodeId,String nodeName){
        response().setContentType("text/javascript; charset=UTF-8");
        response().setHeader(ACCESS_CONTROL_ALLOW_ORIGIN,"*");
       
        //判斷一下引數是否存在,若不存在則直接返回ok。用於服務檢測
        if("".equals(parentNodeId) && "".equals(nodeName)){
            return ok("OK");
        }else {
           ....//你的操作
		   return ...
        }
    }
當然這個不一定非要用在webservice,其他方便需要變長的引數也可以使用。