Date 如何将RESTAPI中Java类的当前日期传递给GraphQLAPI

Date 如何将RESTAPI中Java类的当前日期传递给GraphQLAPI,date,parameter-passing,graphql-java,Date,Parameter Passing,Graphql Java,我正在尝试从Springboot类调用GraphQLAPI。 它会抛出一个错误,如下所示,我知道这个问题是由于我发送到GraphQLAPI的日期造成的 如果我从postman调用相同的graphQL,它工作正常,数据也插入到数据库中。 邮递员正文中给出的输入如下所示 mutation{ createAggrgtrApplctnByOrgid(orgid: "orgid",applctnnm: "applctnnm",dispnm: "

我正在尝试从Springboot类调用GraphQLAPI。 它会抛出一个错误,如下所示,我知道这个问题是由于我发送到GraphQLAPI的日期造成的

如果我从postman调用相同的graphQL,它工作正常,数据也插入到数据库中。 邮递员正文中给出的输入如下所示

mutation{
    createAggrgtrApplctnByOrgid(orgid: "orgid",applctnnm:  "applctnnm",dispnm: "dispnm",applfortxt: "applfortxt",crtdbytxt: "crtdbytxt",updtdbytxt: "updtdbytxt",applctnid: "applctnid",loadts: "loadts",crtdts: "crtdts",updtdts: "updtdts",extrnlapplctnid: "extrnlapplctnid",isdeletedflg: isdeletedflg)
}
String gqlTemplate = resourceReader.asString(createAppGql);;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Constants.DATE_TIME_FORMAT);
        LocalDateTime dateTime = LocalDateTime.now();
        String formattedDateTime = dateTime.format(formatter);
        return txt.replace("orgid", applicationData.getOrganizationId())
                .replace("applctnnm", applicationData.getApplicationName())
                .replace("dispnm", applicationData.getApplicationDisplayName())
                .replace("applfortxt", "")
                .replace("crtdbytxt",applicationData.getRole())
                .replace("updtdbytxt", applicationData.getRole())
                .replace("loadts", "2020-06-28T16:48:37.000+0000")
                .replace("crtdts", "2020-06-28T16:48:37.000+0000")
                .replace("updtdts", "2020-06-28T16:48:37.000+0000")
                .replace("extrnlapplctnid", applicationData.getExternalApplicationId())
                .replace("isdeletedflg", "false" ); 
HttpEntity<String> entity = new HttpEntity<>(queryTemplate, headers);
ResponseEntity<AppDataResponse> response = restTemplate.exchange(appURL, HttpMethod.POST, entity,
                    AppDataResponse.class);
突变{createNewApplication(orgid:“test”,applctnnm:“mynewappl”,dispnm:“test”,applforText:“test”,crtdbytxt:“test”,updtdbytxt:“test”,applid:“test”,loadts:“2020-06-28T16:48:37.000+0000”,updtdtts:“2020-06-28T16:48:37.000+0000”,extrnlappctnid:“test”,isdeletdflg:true)

springbootapi中的graphql文件如下所示

mutation{
    createAggrgtrApplctnByOrgid(orgid: "orgid",applctnnm:  "applctnnm",dispnm: "dispnm",applfortxt: "applfortxt",crtdbytxt: "crtdbytxt",updtdbytxt: "updtdbytxt",applctnid: "applctnid",loadts: "loadts",crtdts: "crtdts",updtdts: "updtdts",extrnlapplctnid: "extrnlapplctnid",isdeletedflg: isdeletedflg)
}
String gqlTemplate = resourceReader.asString(createAppGql);;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Constants.DATE_TIME_FORMAT);
        LocalDateTime dateTime = LocalDateTime.now();
        String formattedDateTime = dateTime.format(formatter);
        return txt.replace("orgid", applicationData.getOrganizationId())
                .replace("applctnnm", applicationData.getApplicationName())
                .replace("dispnm", applicationData.getApplicationDisplayName())
                .replace("applfortxt", "")
                .replace("crtdbytxt",applicationData.getRole())
                .replace("updtdbytxt", applicationData.getRole())
                .replace("loadts", "2020-06-28T16:48:37.000+0000")
                .replace("crtdts", "2020-06-28T16:48:37.000+0000")
                .replace("updtdts", "2020-06-28T16:48:37.000+0000")
                .replace("extrnlapplctnid", applicationData.getExternalApplicationId())
                .replace("isdeletedflg", "false" ); 
HttpEntity<String> entity = new HttpEntity<>(queryTemplate, headers);
ResponseEntity<AppDataResponse> response = restTemplate.exchange(appURL, HttpMethod.POST, entity,
                    AppDataResponse.class);
我的Java文件中的代码如下所示

mutation{
    createAggrgtrApplctnByOrgid(orgid: "orgid",applctnnm:  "applctnnm",dispnm: "dispnm",applfortxt: "applfortxt",crtdbytxt: "crtdbytxt",updtdbytxt: "updtdbytxt",applctnid: "applctnid",loadts: "loadts",crtdts: "crtdts",updtdts: "updtdts",extrnlapplctnid: "extrnlapplctnid",isdeletedflg: isdeletedflg)
}
String gqlTemplate = resourceReader.asString(createAppGql);;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Constants.DATE_TIME_FORMAT);
        LocalDateTime dateTime = LocalDateTime.now();
        String formattedDateTime = dateTime.format(formatter);
        return txt.replace("orgid", applicationData.getOrganizationId())
                .replace("applctnnm", applicationData.getApplicationName())
                .replace("dispnm", applicationData.getApplicationDisplayName())
                .replace("applfortxt", "")
                .replace("crtdbytxt",applicationData.getRole())
                .replace("updtdbytxt", applicationData.getRole())
                .replace("loadts", "2020-06-28T16:48:37.000+0000")
                .replace("crtdts", "2020-06-28T16:48:37.000+0000")
                .replace("updtdts", "2020-06-28T16:48:37.000+0000")
                .replace("extrnlapplctnid", applicationData.getExternalApplicationId())
                .replace("isdeletedflg", "false" ); 
HttpEntity<String> entity = new HttpEntity<>(queryTemplate, headers);
ResponseEntity<AppDataResponse> response = restTemplate.exchange(appURL, HttpMethod.POST, entity,
                    AppDataResponse.class);
String gqlTemplate=resourceReader.asString(createAppGql);;
DateTimeFormatter formatter=DateTimeFormatter.of模式(常数.DATE\u TIME\u格式);
LocalDateTime dateTime=LocalDateTime.now();
字符串formattedDateTime=dateTime.format(格式化程序);
返回txt.replace(“orgid”,applicationData.getOrganizationId())
.replace(“applctnnm”,applicationData.getApplicationName())
.replace(“dispnm”,applicationData.getApplicationDisplayName())
.replace(“applforText”,即“”)
.replace(“crtdbytxt”,applicationData.getRole())
.replace(“updtdbytxt”,applicationData.getRole())
.替换(“荷载”,“2020-06-28T16:48:37.000+0000”)
.替换(“crtdts”,“2020-06-28T16:48:37.000+0000”)
.替换(“UPDTS”,“2020-06-28T16:48:37.000+0000”)
.replace(“extrnlappctnid”,applicationData.getExternalApplicationId())
.替换(“isdeletedflg”、“false”);
HttpEntity=新的HttpEntity(queryTemplate,Header);
ResponseEntity response=restTemplate.exchange(appURL、HttpMethod.POST、entity、,
AppDataResponse.class);
请某人帮助我解决这个问题。如何将日期从java类传递到GraphQLAPI

谢谢! Ram

您的
txt.replace()
没有替换txt字符串的正确部分

您的graphql文本是:

mutation{
    createAggrgtrApplctnByOrgid(
        orgid: "orgid",
        applctnnm:  "applctnnm",
        dispnm: "dispnm",
        applfortxt: "applfortxt",
        crtdbytxt: "crtdbytxt",
        updtdbytxt: "updtdbytxt",
        applctnid: "applctnid",
        loadts: "loadts",
        crtdts: "crtdts",
        updtdts: "updtdts",
        extrnlapplctnid: "extrnlapplctnid",
        isdeletedflg: isdeletedflg)
}
执行
txt.replace(“UPDTS”,“2020-06-28T16:48:37.000+0000”)
时,您将在2020-06-28T16:48:37.000+0000之前替换所有出现的
UPDTS

你的变异变成:

mutation{
    createAggrgtrApplctnByOrgid(
        orgid: "orgid",
        applctnnm:  "applctnnm",
        dispnm: "dispnm",
        applfortxt: "applfortxt",
        crtdbytxt: "crtdbytxt",
        updtdbytxt: "updtdbytxt",
        applctnid: "applctnid",
        loadts: "loadts",
        crtdts: "crtdts",
        2020-06-28T16:48:37.000+0000: "2020-06-28T16:48:37.000+0000",
        extrnlapplctnid: "extrnlapplctnid",
        isdeletedflg: isdeletedflg)
}
这是无效的,因为2020-06-28T16:48:37.000+0000不是有效的字段名!您需要避免替换字段名,而只替换值


我还建议使用适当的graphql客户端库,例如,而不是手动更新查询。

我应该承认,我太愚蠢了,没有注意到键和值都有相同的字符集。感谢AllirionX的快速思考,尽管我之前和另一位朋友注意到了这一点。投了赞成票!:-)@AllirionX这里是我类似的错误:我如何修复它?