【发布时间】:2013-01-14 04:51:21
【问题描述】:
我已经部署了简单的 REST 接口。假设我的 REST 服务部署在此上下文路径中:
http://localhost:8080/Engine/services/Evaluation
然后我像这样调用 URL:
http://localhost:8080/Engine/services/Evaluation?_wadl
我可以看到 XML 输出:
<application>
<grammars/>
<resources base="http://localhost:8080/Engine/services/Evaluation">
<resource path="/Evaluation/">
<resource path="initializeEvaluation/{localeCode}">
<param name="localeCode" style="template" type="xs:string"/>
<method name="GET">
<request>
<representation mediaType="application/octet-stream"/>
</request>
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
</resource>
</resources>
</application>
问题是如何从浏览器调用带有URL的方法?
我已尝试输入:
http://localhost:8080/Engine/services/Evaluation/initializeEvaluation?localeCode=en-GB
但我有:
2013-01-30 11:22:13,477 [http-bio-8080-exec-3] WARN JAXRSInInterceptor - No root resource matching request path /Engine/services/Evaluation/initializeEvaluation has been found, Relative Path: /initializeEvaluation. Please enable FINE/TRACE log level for more details.
2013-01-30 11:22:13,479 [http-bio-8080-exec-3] WARN WebApplicationExceptionMapper - javax.ws.rs.NotFoundException
我是 REST 的新手,但据我了解 URL 应该像上面那样。那为什么我会得到异常?
我的java界面:
@Path("/Evaluation/")
@Produces(MediaType.APPLICATION_JSON)
public interface EvaluationService {
@GET
@Path("initializeEvaluation/{localeCode}")
EvaluationStatus initializeEvaluation(ClientType client, @PathParam("localeCode") String localeCode)
throws EvaluationException;
}
我正在使用 Apache CXF 2.7.0、JDK 1.7、Tomcat 7。
【问题讨论】:
-
@Path("initializeEvaluation/{localeCode}")到@Path("\initializeEvaluation/{localeCode}") -
获取有关不正确字符的语法错误:`\`。
-
它的
@Path("/initializeEvaluation/{localeCode}") -
Web 服务和 WADL 与 REST 无关。吉姆,请阅读这个:roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven 和这个:nordsc.com/ext/classification_of_http_based_apis.html
标签: java web-services rest tomcat cxf