關於瀏覽器接口Preview中的數值和postman中獲取到的不一致問題


 

          線上問題:瀏覽器接口Preview中的數值和postman中獲取到的不一致,preview中看到的值是另外一個值

  • 情況是這樣的:
    前端調用接口,拿到的記錄ID是18446744073709552000,查看后端日志或用postman調用接口,返回的ID是18446744073709551615,瀏覽器中將ID偷摸改掉了....
  • 解決方案:

          讓后端把id轉成string類型,就成功拿到了數據。

           后端網關用的.net core,統一處理,具體方案:Net Core 配置之long類型 前端精度丟失和時間格式設置

 

 

  • 分析原因:
    數據是拿到了,可是為什么id會變呢?既然postman能拿到正確的數據,那說明是瀏覽器的問題。
    查詢資料后了解到:原來是瀏覽器響應數據時,對超長的long型數據進行自動轉換而導致的精度丟失問題。
    那超長是多長?有沒有一個邊界呢?
    答案是:有的。
    我們可以通過ES6的 Number.MAX_SAFE_INTEGER 和Number.MIN_SAFE_INTEGER獲取到上下邊界,在這個范圍內不會出現精度丟失問題。也可以直接同 Number.isSafeInteger() 來判斷一個num是否在邊界范圍內,如下圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM