2012-06-07 26 views
2

我有一個REST服務,我有一個WADL文件。我想引用這個文件並從中訪問它的方法。在WADL文件的內容如下:如何從Java中的WADL文件訪問方法?

<resource path="/loadPerson"> 
    <method id="loadPerson" name="GET"> 
     <request> 
      <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="personId" style="query" type="xs:int"/> 
     </request> 
     <response> 
      <ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02" xmlns="" element="person" mediaType="application/xml"/> 
      <ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02" xmlns="" element="person" mediaType="application/json"/> 
     </response> 
    </method> 
</resource> 

其實我沒有得到如何實現它的方法,因爲我從來沒有與WADL文件之前播放。我該怎麼做?

+0

這不是一個真正的問題,對吧?你會谷歌它。 – Alexander

+1

@Alexander:我做了很多谷歌,但沒有找到我期待的確切解決方案。基本上,我得到了如何處理來自此WADL文件的請求和響應參數。糾正我,如果我錯了,根據我的理解在WADL文件代碼的上面張貼部分「loadPerson」是一種方法,personID是一個輸入參數。但如何在java中訪問它?我需要做什麼? –

+0

我認爲我的評論依然存在。 – Alexander

回答

3

<resource>標識了您將以REST風格進行交互的URL(相對於在外部<resources>元素上指定爲base屬性的基本URL,您不會顯示)。 <method>具有GET的name屬性,這意味着要使用該特定操作,請在資源URL上執行GET操作。內部<request>有一個<param>,所以我們知道添加一個查詢參數到GET URL;在這種情況下,它將是personId=123(或其他整數)。 <response>告訴我們,我們可以通過XML或JSON取回答案;我們應該使用HTTP內容協商來說明哪一個。

WADL中存在一個小錯誤,它指定的<resource> URL的前導碼爲/;這很可能會導致工具問題,因爲它會嘗試組裝正確的URL,但我們仍然可以說出URL的用途(從瞭解RESTful Web應用程序的實現方式)。

假設外<resources>說,基本URL是http://example.org/foobar(並且沒有中間<resource>元素; WADL允許),那麼WADL是說,如果你在http://example.org/foobar/loadPerson?personId=123與HTTP客戶端做一個GET配置更喜歡XML,你會得到一個<person>元素作爲HTTP響應的主體(或者是一個錯誤,例如,如果沒有匹配這樣的personId或者你沒有被授權查找)。

+0

我運行我的項目,並試圖從URL訪問方法爲http:// localhost:8080/proj名稱/資源路徑/ loadPerson?personId = 123但我在瀏覽器上的錯誤HTTP 401 - 未經授權。 (在這種情況下,資源路徑=/loadPerson)。這是否是正確的方式?我認爲這是正確的bcoz它是給予未經授權的錯誤。 –

+0

我嘗試通過輸入URL訪問同一個WADL文件的另一種方法是:http:// localhost:8080/openempi-admin/openempi-ws-rest/person-query-resource/findRaceByCode /?method = findRaceByCode()&raceCode = 100。但是我得到了同樣的身份驗證錯誤。 :( –

相關問題