加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Spring:缺少必需的请求体.无法将JSON传递给RestContr

发布时间:2020-12-15 01:33:38 所属栏目:大数据 来源:网络整理
导读:我有将JSON传递给RestController的问题.它似乎没有消耗它. 控制器: @PostMapping(path = "Users/{UserId}/Transactions",consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)public CompletableFuture TransactionR

我有将JSON传递给RestController的问题.它似乎没有消耗它.

控制器:

@PostMapping(path = "Users/{UserId}/Transactions",consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
public CompletableFuture

TransactionRequest对象模型:

public class TransactionRequest {
@JsonProperty("TransactionType")
private TransactionType transactionType;

@JsonProperty("TransactionId")
private String transactionId;

@JsonProperty("TransactionCreationDate")
private LocalDateTime transactionCreationDate;

@JsonProperty("Amount")
private Long amount;

@JsonProperty("Rake")
private BigDecimal rake;

@JsonProperty("CurrencyCode")
private String currencyCode;

@JsonProperty("EntityReferences")
private List

这是试图发布到控制器的测试方法:

def createTransactionRequest(Integer roundNum,String transType,BigDecimal transactionAmount) {

    def transactionRequest = builder{
        'TransactionType' transType
        'TransactionId' "${new Random().nextInt(50)}"
        'TransactionCreationDate' LocalDateTime.now().toString()
        'Amount' transactionAmount.longValue()
        'Rake' 0.0
        'CurrencyCode' userCurrencyCode
        'EntityReferences' builder.call([
                { 'EntityType' "CasinoRound"; 'EntityId' roundNum },{ 'EntityType' "CasinoSession"; 'EntityId' gameSessionId }
        ])
        'Game' (GameId: "111",GameName: "Some Game")
    }

    String currentDate = ZonedDateTime.now(ZoneId.of("UTC")).format(DATE_FORMATTER)
    def authorizationHeader = buildAuthHeader("POST","Users/${player.uuid}/Transactions?PartnerUserSessionKey=$gameSessionId",JsonOutput.toJson(transactionRequest),currentDate)

    return client.post(path: "Users/${player.uuid}/Transactions",query: ["PartnerUserSessionKey": gameSessionId],headers: ['Authorization' : authorizationHeader,DateUtc : currentDate]) {
        type "application/json"
        json transactionRequest
    }

}

测试方法是用Groovy编写的.和groovy.json.JsonBuilder中的Builder一样. (忽略authorizationHeader方法,它只是为了生成授权签名,它工作)我尝试过只发送几个参数,但每次都会给我相同的错误.这是错误:

2017-09-05 12:38:26,005 WARN  c.n.c.e.CommonExceptionHandler - Required request body is missing: public java.util.concurrent.CompletableFuture

我相信它有对象模型的东西,但不知道是什么.我试过传递不同的组合,但没有运气.它只会给我所需的请求正文丢失.

这是生成的JSON:

{"TransactionType":"CasinoRound_Stake","TransactionId":"31","TransactionCreationDate":"2017-09-05T15:38:08.610","Amount":400,"Rake":0.0,"CurrencyCode":"EUR","EntityReferences":[{"EntityType":"CasinoRound","EntityId":1},{"EntityType":"CasinoSession","EntityId":"9f31d8b9-28f7-4931-bb9d-73f90c2b2de7"}],"Game":{"GameId":"111","GameName":"Some Game"}}
最佳答案
你可能有一个过滤器,你已经读过它了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读