【问题标题】:REST API with Struts带有 Struts 的 REST API
【发布时间】:2011-12-30 11:19:48
【问题描述】:

我正在尝试将 REST API 添加到现有的 struts 2 应用程序。

这个想法是让应用程序的一部分使用标准的 struts 映射,而另一部分使用 REST。

于是我使用了struts2-rest-plugin插件,并添加了如下配置:

struts.xml:

<constant name="rest" value="org.apache.struts2.rest.RestActionMapper"/>
<constant name="struts.mapper.class"   
  value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper"/>
<constant name="struts.mapper.prefixMapping" value="/rest:rest,/:struts"/>

struts.properties:

struts.action.extension=,htm,action,xml,json

TasksController.java:

package xxx.common.webservice.rest;

public class TasksController implements ModelDriven<Task> {

  public String update() {
    return "UPDATE";
  }

  // Handles /tasks/{id} GET requests
  public String show() {
    return "YES";
  }

  @Override
  public Task getModel() {
    // TODO Auto-generated method stub
    return null;
  }

}

使用此配置,基本的 struts 操作工作,但我无法让 REST 操作工作。 我还尝试了不同的 struts.xml 配置(包括约定插件选项),但没有任何成功,映射永远不会与 config-brower plugin 一起显示。

知道我错过了什么或做错了什么吗?

【问题讨论】:

  • 您所说的“无法让 REST 操作正常工作”是什么意思?一点解释会有所帮助
  • 抱歉,我的意思是其余操作总是返回 404 错误(GET 和 POST)或 403 错误(PUT 和 DELETE)。
  • 我不确定 REST 是如何工作的,但您需要注意每个操作都应该定义命名空间。希望其他人可以调查一下
  • 检查用户列表档案以将 REST 与“常规”操作相结合;我可以在周末玩这个,就像我做同样的事情一样,但现在不记得怎么玩了:(
  • 我也在尝试,有没有成功。

标签: rest struts2 struts


【解决方案1】:

终于成功了,但那是前一阵子了,我不记得具体做了什么,这是我的配置,希望对你有帮助。

struts.xml

<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.package.locators" value="webservice"/>
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.default.parent.package" value="rest-default"/>


<constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" />
<constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts" />

<package name="home" namespace="/" extends="struts-default">
    ...
</package>

TaskController.java

package com.test.webservice.rest;

public class TaskController extends RestActionSupport implements
    ModelDriven<TaskDTO> {
      public final HttpHeaderResult show() {
         ...
      }
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 2013-01-14
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2015-10-19
    • 2014-08-07
    相关资源
    最近更新 更多