簡體   English   中英

REST POST to Java應用程序返回JSON響應,其中某些字段為null

[英]REST POST to Java app returns JSON response with some fields null

我正在使用Postman輸入JSON POST到運行我的Springboot應用程序的本地主機。

POST是:

{"applicantName":"On Gaber","amount":"5000","asset":"Car","creditScore":"602"}

調節器

@RestController
public class LoanSubmissionController {
private LoanService loanService;
@Autowired
public LoanSubmissionController(LoanService loanService) {
    this.loanService = loanService;
}

@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
LoanApplicationDTO create(
        @RequestBody @Valid LoanApplicationDTO loanApplicationDTO) {
    return loanService.create(loanApplicationDTO);

}

服務等級:

@Service
public class LoanSubmissionService implements LoanService {

@Autowired
private final LoanApplicationRepository repository;

@Autowired
public LoanSubmissionService(LoanApplicationRepository repository) {
    this.repository = repository;
}

// @Override
public LoanApplicationDTO create(LoanApplicationDTO loanApplicationDTO) {
    LoanApplication persisted = LoanApplication.getBuilder()
            .applicantName(loanApplicationDTO.getApplicantName())
            .amount(loanApplicationDTO.getAmount()).build();
    persisted = repository.save(persisted);
    return convertToDTO(persisted);
}

儲存庫類別:

public interface LoanApplicationRepository extends
    MongoRepository<LoanApplication, String> {

@SuppressWarnings("unchecked")
LoanApplication save(LoanApplication saved);

DTO類別:

package com.liquidlogic.loanprocessor.web;

public final class LoanApplicationDTO {

private String id;
private String applicantName;
private String amount;
private String asset;
private String creditScore;

public LoanApplicationDTO() {
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getApplicantName() {
    return applicantName;
}

public void setApplicantName(String applicantName) {
    this.applicantName = applicantName;
}

public String getAmount() {
    return amount;
}

public void setAmount(String amount) {
    this.amount = amount;
}

public String getAsset() {
    return asset;
}

public void setAsset(String asset) {
    this.asset = asset;
}

public String getCreditScore() {
    return creditScore;
}

public void setCreditScore(String creditScore) {
    this.creditScore = creditScore;
}

}

域類:

import org.springframework.data.annotation.Id;
import org.springframework.util.Assert;

public class LoanApplication implements Application {

@Id
private String id;
private String applicantName;
private String amount;
private String asset;
private String creditScore;

public LoanApplication() {
}

private LoanApplication(ApplicationBuilder builder) {
    Assert.notNull(builder);
    this.applicantName = builder.applicantName;
    this.amount = builder.amount;
    this.asset = builder.asset;
    this.creditScore = builder.creditScore;
}

public static ApplicationBuilder getBuilder() {
    return new ApplicationBuilder();
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getAmount() {
    return amount;
}

public void setAmount(String amount) {
    this.amount = amount;
}

public String getAsset() {
    return asset;
}

public void setAsset(String asset) {
    this.asset = asset;
}

public String getCreditScore() {
    return creditScore;
}

public void setCreditScore(String creditScore) {
    this.creditScore = creditScore;
}

public void setApplicantName(String applicantName) {
    this.applicantName = applicantName;
}

public String getApplicantName() {
    return applicantName;
}

@Override
public String toString() {
    return "LoanApplication [id=" + id + ", applicantName=" + applicantName
            + ", amount=" + amount + ", asset=" + asset + ", creditScore="
            + creditScore + "]";
}

public void update(String applicantName, String amount, String asset,
        String creditScore) {
    this.applicantName = applicantName;
    this.amount = amount;
    this.asset = asset;
    this.creditScore = creditScore;
}

public static class ApplicationBuilder {

    private String applicantName;
    private String amount;
    private String asset;
    private String creditScore;

    private ApplicationBuilder() {
    }

    public ApplicationBuilder applicantName(String applicantName) {
        this.applicantName = applicantName;
        return this;
    }

    public ApplicationBuilder amount(String amount) {
        this.amount = amount;
        return this;
    }

    public ApplicationBuilder asset(String asset) {
        this.asset = asset;
        return this;
    }

    public ApplicationBuilder creditScore(String creditScore) {
        this.creditScore = creditScore;
        return this;
    }

    public LoanApplication build() {
        LoanApplication build = new LoanApplication(this);
        return build;
    }

}

}

Springboot自動連接並配置整個應用程序。 不需要web.xml或Spring配置,Springboot可以完成所有工作。

application.properties:

logging.level.org.springframework.web=DEBUG
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017

JSON響應:

{
  "id": "55c39c23f04a07251bc598b0",
  "applicantName": "On Gaber",
  "amount": "5000",
  "asset": null,
  "creditScore": null
}

Eclipse Console的縮寫輸出:

: Started LoanApplicationProcessor in 5.258 seconds (JVM running for 6.012)
: Successfully completed request

域和DTO中的所有字段均為String類型。 我不知道為什么“資產”和“ credtiScore”字段為空。 有任何想法嗎?

您不會在public LoanApplicationDTO create(LoanApplicationDTO loanApplicationDTO)方法中將這些字段的值分配給新實體,因此不會public LoanApplicationDTO create(LoanApplicationDTO loanApplicationDTO)這些值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM