2017-07-27 37 views
1

從ajax前端調用REST WS時,我有一個基本的疑問。我從AJAX調用WS爲:使用不同的參數調用REST WS

url: self.GET_GOAL_VIEW_URL + '?userEmail=' + eMail, 

或爲:

url: self.GET_GOAL_VIEW_URL, 

現在情況下USEREMAIL參數將被明確地過去了,我需要在後端服務代碼中使用USEREMAIL,但如果userEmail在呼叫中不存在,則需要使用另一個名爲userId的參數,該參數由代理添加到呼叫中。

因此,我沒有得到如何編寫WS API,以便它可以使用此參數或基於ajax請求中使用哪個參數。將感謝您的幫助。

+2

您需要以接受兩個參數的方式開發Web服務。參數可以是可選的,並且業務處理邏輯將基於請求中接收哪個參數。爲什麼不將包含所有可能參數的'JSON'字符串傳遞給'REST'服務,並根據請求中傳遞的內容在服務中處理它們。 –

+0

像@AniketV提到的那樣,你需要設計你的web服務來接受'userMail'和'userId'。您使用什麼技術來開發後端Web服務? –

回答

0

您可以傳遞參數作爲查詢參數或body params。 您還沒有提到它的REST框架您將使用在後端所以假設您使用的球衣,代碼應該如下:

通過查詢參數:

@POST 
@Path("/somepath") 
public Response doSomething(@QueryParam("userEmail") String userEmail, @QueryParam("userId") String userId) { 
    if(userEmail != null && !userEmail.equals("")) { 
     //use email address 
    } else if(userId != null && !userId.equals("")) { 
     //use user id 
    } else { 
     throw new RuntimeException() 
    } 
} 

隨着車身參數:

@POST 
@Path("/somepath") 
public Response doSomething(userDTO user) { 
    if(user.getUserEmail() != null && !user.getUserEmail().equals("")) { 
     //use email address 
    } else if(user.getUserId() != null && !user.getUserId().equals("")) { 
     //use user id 
    } else { 
     throw new RuntimeException() 
    } 
} 

當然,你需要指定你回什麼內容類型,並根據需要更改的方法類型。

+0

非常感謝回覆。我正在使用球衣,並且正在發送查詢參數請求。因此,如果我在上面給出的REST API方法中有2個參數,並且在我的ajax調用中只發送一個參數或根本沒有參數,那就沒問題了,不會吧?它會查看是否有任何這些參數在ajax調用中可用,並相應地將請求中的參數名稱與WS方法參數進行匹配並進行設置。 –

+0

@RohitGupta是正確的 - JAX-RS(澤西島)查詢參數不是強制性的。如果你的客戶端不發送它們,它們將是空的。 – zuckermanori