2015-06-11 57 views
0

我有一個URL像這樣爪哇 - 獲取URL的參數

我使用的是發揮框架

HTTP路線:

GET  /students     controllers.Application.Get() 
POST /students     controllers.Application.Post() 
PUT  /students/{studentNo}  controllers.Application.Put() 

我將如何得到{studentNo}價值?例如,我正在使用郵遞員(其餘客戶端),並且我在URL http://localhost:9000/students/2012111222中鍵入了一些內容,我將如何獲取「2012111222」。我是否需要拆分URL的值才能獲取該參數或者是否有其他內容。謝謝。!

+1

你用什麼框架(球衣?)u能提供一些更多的代碼獲取的價值?一個猜測:嘗試像這樣:'public void myPost(@PathParam(「studentNo」)studentNo){... some code ...}' – DonMushroom

+0

我正在使用Play框架。對不起如果我沒有提到。 – Zelgh

+0

你有一些代碼嗎?例如一個get方法?這個網址指向哪裏? – DonMushroom

回答

1

正如你在Play's routing documentation你可以看到使用冒號語法來定義路由URL的某些部分是變量並將該變量傳遞給控制器​​方法,即:

POST /students/:studentNo  controllers.Application.Post(studentNo: Long) 
+0

這樣做可以,但我的導師要求沒有冒號的那個。是否有另一種類似於類似的方式? – Zelgh

+1

@Zelgh你是什麼意思,他要求沒有冒號的那個?我無法看到這將是一個有效的播放路線,因爲它沒有在文檔中定義。你可能把它與JAX-RS'@ Path'註解混淆了,它使用大括號來指定路徑中的變量? – Christina

+0

嗯,我不知道。他只是給了這個筆記。例如: 2。更新學生 方法:PUT 網址:HTTP://本地主機:7777 /學生// {} studentNumber RequestBody:學生信息,除了學生數(JSON格式) 響應:{ \t 「消息」:「更新成功學生{學號}「 } – Zelgh

0

做這樣的事情:

如果你有一個字符串,如:

String s="POST /students/12  controllers.Application.Post()"; 

您可以檢索 「12」,如:

int studentNo = Integer.parseInt(s.split("\\s+|,\\s*|\\.\\s*")[1].split("/")[2]); 
+0

對不起,我編輯了我的問題。如何獲取來自REST客戶端的URL? – Zelgh

+0

查看我的更新回答@Zelgh – skrtbhtngr

-1

您不能使用/students/:studentNo,應在POST請求使用/students?number=111使用DyanamicFormrequest().getQueryString("number")不提controllers.Application.Post(studentNo: Long)

+0

事實上,您可以將學生編號作爲發佈請求主體的一部分,並不意味着您也沒有選擇將其作爲路徑的一部分。 – Christina

+0

我沒有注意到。我編輯了我的帖子,它應該在PUT上而不是POST。 – Zelgh