如何接受JSON帖子数据

时间:2016-12-17 22:27:14

标签: java spring spring-mvc spring-boot

有没有办法可以简化这个:

@PostMapping(value = "create", consumes = "application/json", produces = "application/json")
public Response create(@RequestBody ObjectNode json) {
    return new Response(json.get("name").asText(), 200);
}

主要是我想知道是否有可能对消费和消费进行注释。产生。我的应用程序将是一个API服务,因此所有请求/响应都将基于JSON。我不想在每个控制器方法上保留它。

不太重要:
我知道如果这是一种创建注释的方法,我可以传递@RequestParam Comment comment,但如果我想从同一方法同时创建注释和其他内容,该怎么办呢?

是否比使用ObjectNode和json更清晰,而不是json.get().as...

2 个答案:

答案 0 :(得分:1)

事实证明,您可以使用@ResponseBody@RequestBody注释您的方法/控制器,以获得相同的结果。

答案 1 :(得分:-1)

MyServer.class

@POST
 public Response save(String data) {
    return Response.status(Response.Status.ACCEPTED).entity(repository.save(data)).build();
}

现在它将作为发布请求转到服务器。

如果没有ID,请添加此代码。

ResourceConverter converter = new ... converter.disableDeserialisationOption(DeserializationFeature.REQUIRE_RESOURCE_ID);

这允许您删除id限制。 替代方案是您应该使用当前快照版本

以下是存储库类的保存方法

public String save(String data) {
    Server myServer= converter.readObject(data.getBytes(), Server.class);
    Key<Server> savedMyServer = datastore.save(myServer);
    Server usingKey = datastore.getByKey(Server.class, savedMyServer);

    try {
        return new String(converter.writeObject(usingKey), StandardCharsets.UTF_8);
    } catch (JsonProcessingException | IllegalAccessException e) {
        LOGGER.debug(e.getMessage());
    }
    return null;
}