【问题标题】:Call REST web service URL from the browser从浏览器调用 REST Web 服务 URL
【发布时间】: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。

【问题讨论】:

标签: java web-services rest tomcat cxf


【解决方案1】:

这是一个路径参数。因此,我认为 URL 应该是:

http://localhost:8080/Engine/services/Evaluation/initializeEvaluation/en-GB

【讨论】:

    【解决方案2】:

    @Path 注释中缺少 /。

    @Path("/initializeEvaluation/{localeCode}")
    

    【讨论】:

    • 同样的错误。请注意,我在@Path("/Evaluation/") 上有/,所以我不需要它。
    【解决方案3】:

    使用RestClient插件,让你的生活更轻松。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 2015-10-24
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多