【问题标题】:Rest Service HttpStatus code 400 GET /user/%7Bid%7D休息服务 HttpStatus 代码 400 GET /user/%7Bid%7D
【发布时间】:2014-07-03 16:56:06
【问题描述】:

我只是想通过控制器服务接口获取用户数据但我总是得到

[WARN] 400 - GET /user/%7Bid%7D (127.0.0.1) 1403 bytes

我的控制器:

@Controller
@RequestMapping(value ="/user")
public class AdminSpringController {

@RequestMapping( value = "/{id}", method = RequestMethod.GET)
    @ResponseStatus(HttpStatus.OK)
    public @ResponseBody GWTUser getUser(@PathVariable Integer id) throws NotFoundException {
...
}

}

我的服务,它是一个 restygwt 界面:

@Path("/user")
public interface UserAdminRestService extends RestService {

@GET
    @Path("/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public void getUser(Integer id, MethodCallback<GWTUser> callback);
}

我的小服务程序:

<servlet>
    <servlet-name>userService</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/classes/servlet/userService-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>userService</servlet-name>   
    <url-pattern>/</url-pattern>
  </servlet-mapping>

我的 servlet.xml

<context:component-scan base-package="com.app.admin.controller" />

    <tx:annotation-driven />

    <mvc:annotation-driven />

    <!--This tag allows for mapping the DispatcherServlet to "/" (all extensions etc) -->
    <mvc:default-servlet-handler/> 


    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />             
            </list>
        </property>
    </bean>

我已经有一个方法(user/users 可以返回所有用户,它工作正常,但我认为问题出在我的{id}(参数变量),因为似乎我的服务或其他东西会像你一样解析我的{id}可以看到我的错误/user/%7Bid%7D。感谢您的帮助。

【问题讨论】:

    标签: spring google-app-engine rest maven gwt


    【解决方案1】:

    服务接口中缺少@PathParam("id") 是问题所在。

    public void getUser(@PathParam("id") Integer id, MethodCallback<GWTUser> callback);
    

    例如更新:

    @PUT
    @Path("/update")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public void update(GWTUser user, MethodCallback<UserServiceResponse> callback);
    

    你需要设置RequestBody

    @RequestMapping( value = "/update", method = RequestMethod.PUT)
    @ResponseStatus(HttpStatus.OK)
    public void update(@RequestBody GWTUser gwtUser) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2017-07-29
      • 2013-11-27
      • 1970-01-01
      • 2021-10-20
      • 2018-09-27
      相关资源
      最近更新 更多