通过 rest API 以 0 或 null 形式出现的值对本机/弹簧启动作出反应

Posted

技术标签:

【中文标题】通过 rest API 以 0 或 null 形式出现的值对本机/弹簧启动作出反应【英文标题】:values coming as 0 or null through rest API react native/spring boot 【发布时间】:2019-04-30 18:14:34 【问题描述】:

我正在尝试将一些数据从我的前端(react native)发送到我的中间件(spring boot),由于某种原因,这些值是 0 和 null。通过邮递员发送完全相同的对象就可以了。我试过用“像"quizId":2包围参数的名称,它也不起作用。我之前使用过这个确切的方法并取得了巨大的成功。我对这是如何发生的一无所知。任何帮助非常感谢。

端点:

void recordScore(@RequestBody Score score)
    System.out.println(score);
    serv.recordScore(score);

从 react native 发送时,上面 sysout 的控制台输出:

Score(quizId=0, staffId=0, totalScore=0.0, userQuizRecords=null, timeTaken=0, correctAns=0, takenDate=null)

使用邮递员时的控制台输出:

Score(quizId=3, staffId=405986, totalScore=30.0, userQuizRecords=[UserQuizRecord(id=0, staffId=405986, quizId=2, questionId=5, score=4, correctAns=true, takenDate=null), UserQuizRecord(id=0, staffId=405986, quizId=2, questionId=6, score=1, correctAns=false, takenDate=null), UserQuizRecord(id=0, staffId=405986, quizId=2, questionId=7, score=4, correctAns=true, takenDate=null), UserQuizRecord(id=0, staffId=405986, quizId=2, questionId=8, score=3, correctAns=false, takenDate=null)], timeTaken=400, correctAns=4, takenDate=null)

js:

let score = 
      quizId: 2,
      staffId: 405986,
      totalScore: 30,
      userQuizRecords: [
              staffId: 405986,
              quizId: 2,
              questionId: 5,
              score: 4,
              correctAns: true
          ,
          
              staffId: 405986,
              quizId: 2,
              questionId: 6,
              score: 1,
              correctAns: false
          ,
          
              staffId: 405986,
              quizId: 2,
              questionId: 7,
              score: 4,
              correctAns: true
          ,
          
              staffId: 405986,
              quizId: 2,
             questionId: 8,
              score: 3,
              correctAns:false
          
      ],
      timeTaken: 400,
      correctAns: 4
    

获取:

return fetch(apis.recordScore, 
            method: 'POST',
            headers: 
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            ,
            body: JSON.stringify(
                score:score
            )

【问题讨论】:

【参考方案1】:

您确定使用邮递员发送完全相同的数据吗?

这里可能出错了:

body: JSON.stringify(
    score:score
)

尝试不使用包装分数对象

body: JSON.stringify(score)

我无法从此处看到您的分数定义,但我认为它没有被定义为具有 名为 score 的成员属性,所有字段都封装在该子字段中。

【讨论】:

【参考方案2】:

你可以尝试在没有大括号的情况下对对象进行字符串化

body: JSON.stringify(score)

【讨论】:

以上是关于通过 rest API 以 0 或 null 形式出现的值对本机/弹簧启动作出反应的主要内容,如果未能解决你的问题,请参考以下文章

使用 OAuth2.0 或 Azure Active Directory 保护 REST API

关于RESTRESTfulREST API的资料存储

如何在使用 AJAX、Django REST API 和 jQuery 以模式形式更新记录时显示外键字段名称而不是 ID

Restful API 特性详解

Jenkins REST API 使用实战

Google Pub/Sub - 多个订阅同一主题以通过 REST API 减少负载?