2012-06-07 23 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。但是我得到了同样的身份验证错误。 :( –

相关问题