首页 > 解决方案 > Spring REST:除了实体之外,还从请求正文中获取 JSON 数据

问题描述

我正在使用 spring REST 处理 java 项目。

我的问题是在将请求正文(即 json)作为实体接收后,我无法从请求正文(即 json)中提取数据。

例如:

JSON 请求正文

{
    "firstname": "Rayan",
    "lastname": "Cold",
    "company_id": 23
}

我的控制器映射方法是:

@PostMapping("/employee")
public Employee createEmployee(@RequestBody Employee employee) {

    // Here i need to extract the company id from request body
    // Long companyId = *something* // how i can extract from request ?

    return companiesRepository.findById(companyId).map(company -> {
        employee.setCompany(company);
        return employeeRepository.save(employee);
    }).orElseThrow(() -> new ResourceNotFoundException("Company not found"));
}

我知道我可以将公司 ID 作为路径变量传递。但我确实希望它在请求正文中而不是在 URI 中。

谢谢

标签: javaspringspring-data-jpaspring-data

解决方案


如果您的 Employee 类包含 companyId,则无法映射 company_id。

我猜您的公司课程如下:

public class Employee {

private String firstname;
private String lastname;
private Long companyId;

//跳过getter setter }

将其更改为:

public class Employee {

private String firstname;
private String lastname;
@Transient
@JsonProperty("company_id")
private Long companyId;

//跳过getter setter }


推荐阅读