当前位置: 首页 > 知识库问答 >
问题:

修补REST API以在Spring Boot中部分更新MongoDB

段坚
2023-03-14

我想向我的API发送一个REST补丁请求,只更新一些字段,而不是整个RequestBody。有人能帮我解决这个问题吗

@PatchMapping("/update/{id}")
    public ResponseEntity<String> update(@Valid @RequestBody Ordonnance ordonnance, @PathVariable("id") String id){

        Optional<Ordonnance> ordonnanceData = ordonnanceRepository.findById(id);
       this.ordonnanceRepository.save(ordonnance);
       return ResponseEntity.ok("resource updated");
}

共有1个答案

别兴国
2023-03-14

您可以通过调用从存储库返回的对象上的setter来修改字段。

@PatchMapping("/update/{id}")
public ResponseEntity<String> update(@Valid @RequestBody Ordonnance ordonnance, @PathVariable("id") String id){
    Optional<Ordonnance> dbOrdonnance = ordonnanceRepository.findById(id);

    if (!ordonnanceData.isPresent()) {
      // The ID entered could not be found.
      return ResponseEntity.notFound("Resource with id " + id + " was not found");
    }

    // Modify the values of the Ordonnance object retrieved from the database
    Ordonnance ordonnanceToEdit = dbOrdonnance.get();
    ordonnanceToEdit.setField1(ordonnance.getField1());
    ordonnanceToEdit.setField2(ordonnance.getField2());
    ordonnanceToEdit.setField3(ordonnance.getField3());

    // Save to repository
    this.ordonnanceRepository.save(ordonnanceToEdit);
    return ResponseEntity.ok("Resource with ID " + id + " was successfully updated.");
}

这段代码应该可以工作,但是您应该创建单独的Java DTO类,这些类通常用于传输数据。这样,您只能传递ID和要更新的字段,而不必传递整个对象。

 类似资料:
  • 我有一个项目,我正在使用Spring MVC Jackson构建REST服务。假设我有以下java实体 有时候,我只是想更新布尔值,我不认为发送带有大字符串的整个对象只是为了更新一个简单的布尔值是个好主意。所以,我考虑过使用PATCH HTTP方法只发送需要更新的字段。所以,我在我的控制器中声明了以下方法: 问题是:我如何知道哪些字段需要更新?例如,如果客户端只想更新布尔值,我将得到一个带有空“a

  • 如何使用补丁方法更新FOS用户的详细信息。所以当我在Json中传递部分细节时,只更新这些细节。 用户实体 我的实体没有更新。我做错了什么?

  • 问题内容: 如何使用NEST2部分更新记录? 我正在寻找一个模拟请求:POST / erection / shop / 1 / _update {“ doc”:{“ new”:“ 0”}} 而无需重新 创建新记录。不幸的是,我没有在www.elastic.co/guide/en/elasticsearch/client/net- api/current/index.html中找到有关更新的任何信息

  • 问题内容: 我想做如下的部分更新。添加一些新字段,例如Bytes_In和Bytes_Out。并且还运行脚本来更新使用脚本从其他字段派生的字段。 脚本session-duration-script.groovy在/ config / scripts路径下。 当我运行上述更新查询时,出现此错误 请让我知道有办法实现这种更新。 问题答案: 由于错误状态,您不能同时使用和。我的建议是修改脚本,以添加所需的

  • 我们要求当前在SOLR中索引的文档可能需要定期进行部分更新。更新可以是。添加新字段B。更新现有字段的内容。我们模式中的一些字段是存储的,其他的没有。 Solr4确实允许这样做,但必须存储所有字段。见Update a new field to existing document和http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-updat

  • 我们使用Golang实现了一个包含CRUD的REST API,在Update服务中,客户端可以发送部分JSON(包括更改的字段),我们需要处理这些更改对实体的更新。 逻辑上,我们需要通过Id从DB获取实体到结构,然后将有效载荷json解封到另一个结构并更新实体。 这是一个简单的例子,实际上它可能是一个嵌套的结构和嵌套的json,我们如何用golang或事件其他语言(如Java,.NET)来处理这种