rest - Grails Restful Controller 未从帖子上的 rest 模板接收数据(保存)

标签 rest grails resttemplate

我有一个扩展 RestfulController 的 grails 休息接口(interface)。当我不覆盖任何方法并且我的代码如下所示:

class UserController extends RestfulController<User> {

   static responseFormats = ["json"]

    UserController() {
        super(User)
    }
}

有了上面的代码,我可以毫无问题地通过 resttemplate 和 curl 发布
_restTemplate.exchange(url, httpMethod, httpEntity, clazz, id)

一旦我覆盖了一些其余的 Controller ,比如我的 resttemplate.exchange 下面的代码就不再起作用了。我没有看到将用户对象传递到 Controller (通过调试检查)。使用 curl post 我看到一个对象被传递给 Controller ​​。我可以通过 curl 和 restTemplate.echange 成功使用 GET
class UserController extends RestfulController<User> {

    static responseFormats = ["json"]

    UserController() {
        super(User)
    }
    @Transactional
    def save(User user) {
        user.save(flush: true)
        render(model: user, status: 201) as JSON
    }
}

我的标题和模板是这样构建的:
private List<HttpMessageConverter<?>> getMessageConverters() {
    List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
    converters.add(new MappingJackson2HttpMessageConverter());
    return converters;
}

private HttpHeaders getHeaders() {
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    headers.setContentType((MediaType.APPLICATION_JSON));
    return headers;
}

private RestTemplate getTemplate() {
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setMessageConverters(getMessageConverters());
    restTemplate.setErrorHandler(new CustomResponseErrorHandler());
    return restTemplate;
}

我从 resttemplate.exchange 发布时收到的错误消息是:
An unexpected error occurredorg.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class receiptbucketserver.User] and content type [text/html;charset=UTF-8]

有任何想法吗???

最佳答案

好的,不是一个真正的答案。我对为什么 resttemplate.exchange 除了默认的 RestfulController 代码之外的任何东西都失败了,但我能够从 restful Controller 中窃取并得到我想要的东西,这是控制和调试方法的能力,例如保存......这个是我从super那里偷来的……

@Override
Object save() {
    def instance = createResource()
    User user = instance
    user.save(flush: true)
    respond user, [status: CREATED]
}

关于rest - Grails Restful Controller 未从帖子上的 rest 模板接收数据(保存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181352/

相关文章:

grails - 从 Maven 原型(prototype)创建 grails 项目

java - Rest API 请求参数和路径变量

java - 使用 Spring 4 RestTemplate 上传 MultipartFile 列表(Java 客户端和 RestController)

php - Laravel Restfull Controller 和路由 ajax/sync 请求

javascript - 如何修复本地捕获的异常的 "' throw'?

javascript - Rails 4 和 AngularJS 1.3.x $http.get 出现 406 Not Acceptable 错误

grails - 我的 Controller 中无法访问域类

python - Paypal Rest API 不断返回格式错误的 json 错误

grails - Grails:我们可以在g:link中将字符串作为id传递吗?还是其他方式?

Json 数组到 Pojo