最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java ApiPost請求返回406狀態(tài)碼問題的解決方案

 更新時(shí)間:2025年04月22日 10:07:12   作者:麻辣香蟈蟈  
APIPost是一款專為開發(fā)者和測試人員設(shè)計(jì)的API測試工具,類似于Postman,但提供了更多的團(tuán)隊(duì)協(xié)作和文檔管理功能,它可以幫助你更好地進(jìn)行接口調(diào)試和集成測試,但遇到了請求后返回的是406狀態(tài),所以本文給大家介紹了Java ApiPost請求返回406狀態(tài)碼問題的解決方案

一、前言

  • 使用ApiPost請求的時(shí)候遇到問題記錄
  • 這是記錄思考過程,看結(jié)果直接看5.1.2小節(jié)

二、學(xué)習(xí)內(nèi)容:

  • 序列化與反序列化
  • 數(shù)據(jù)傳輸

三、問題描述

3.1 問題截圖

  • 前端請求后返回的是406狀態(tài)

在這里插入圖片描述

3.2 錯誤簡介

3.2.1 HTTP狀態(tài)碼 406 Not Acceptable

  • 客戶端發(fā)送一個(gè)請求,并且在請求頭中指定了一個(gè)或多個(gè)可接受的內(nèi)容類型(通過 Accept 頭字段)
  • ?? 而服務(wù)器無法提供任何這些類型的內(nèi)容時(shí),就會返回這個(gè)狀態(tài)碼。

3.2.2 序列化和反序列化

Java中的序列化和反序列化是將對象轉(zhuǎn)換為字節(jié)流和將字節(jié)流轉(zhuǎn)換回對象的過程

  • 序列化使對象能夠被存儲到文件、發(fā)送到網(wǎng)絡(luò)中或進(jìn)行其他操作
  • 反序列化則是將這些字節(jié)流恢復(fù)為原來的對象。

3.3 后端問題位置

后臺沒有明顯報(bào)錯

@PostMapping("login")
public Result login(@RequestBody AdminLoginDTO adminLoginDTO) {
    log.info("adminLoginDTO:{}", adminLoginDTO);
    String token = adminService.login(adminLoginDTO);
    return Result.success(token);
}

四、解決方案:

4.1 認(rèn)識問題

  • 在Java中,要使一個(gè)對象可被序列化,必須實(shí)現(xiàn) java.io.Serializable 接口。這個(gè)接口是一個(gè)標(biāo)記接口,不需要實(shí)現(xiàn)任何方法

如圖代碼生成器生成的實(shí)體類就有

在這里插入圖片描述

4.2 解決過程

4.2.1 查找原因

查找406會出現(xiàn)的問題

客戶端請求頭設(shè)置問題

  • 問題核心:客戶端請求頭中的 Accept 字段指定的內(nèi)容類型,服務(wù)器無法提供。

服務(wù)器端配置問題

  • 問題核心:服務(wù)器沒有配置正確的消息轉(zhuǎn)換器來支持客戶端請求的內(nèi)容類型。

不兼容的內(nèi)容類型

  • 問題核心:客戶端和服務(wù)器之間存在內(nèi)容類型不兼容的問題。 4.2.2 根據(jù)原因檢查代碼錯誤

觀察后發(fā)現(xiàn)主要是類型的錯誤,不管是客戶端還是服務(wù)器肯定哪里類型轉(zhuǎn)換出了問題

  • 可是這些配置一般Spring框架都已經(jīng)配置好了,平時(shí)也沒遇到這個(gè)問題,代碼也是自動生成的
  • 所以肯定是自己寫的返回的類型少了什么導(dǎo)致無法轉(zhuǎn)換

4.2.3 定位成功

Result類沒有使用 getter 和 setter方法

為什么 @Data 注解可以解決問題

  • 自動生成 gettersetter 方法:@Data 注解自動生成了所有屬性的 gettersetter 方法。
  • 序列化和反序列化:使用 @Data 注解后,序列化庫(如 Jackson 或 Gson)能夠正確識別并處理這些方法。
    注意是序列化庫

如圖注解加上或者自己寫 gettersetter 方法即可

當(dāng)時(shí)只想著后端代碼能用即可,沒注意傳輸?shù)膯栴}

在這里插入圖片描述

4.3.2.3 結(jié)果

自定義的返回類能正常傳輸

在這里插入圖片描述

五、總結(jié):

5.1 注意事項(xiàng)

5.1.1 序列化 getter 和 setter 方法無關(guān)

無論是否有 getter 和 setter 方法,只要類實(shí)現(xiàn)了 Serializable 接口,實(shí)例就能夠被序列化和反序列化。

  • 如果你不使用序列化庫,或者你自定義了序列化和反序列化的方法,那么不使用 getter 和 setter 也是可以的

5.1.2 Jackson、Gson 等庫需要注意

本次錯誤主要原因: getter 和 setter 方法沒寫,序列化的時(shí)候可能訪問不到對象

傳輸使用到了Jackson 庫,所以gettersetter 方法盡量都要寫出

在這里插入圖片描述

  • 與序列化庫的兼容:如 Jackson 和 Gson 等庫在處理 Java 對象時(shí),通常會使用 getter 和 setter 方法來訪問字段的值。如果沒有這些方法,這些庫可能無法正確識別或處理一些字段。

例子如下:

import com.fasterxml.jackson.databind.ObjectMapper;  

public class Main {  
    public static void main(String[] args) throws Exception {  
        ObjectMapper objectMapper = new ObjectMapper();  
        
        // 創(chuàng)建對象  
        Person person = new Person();  
        person.setName("Alice");  
        person.setAge(30);  
        
        // 序列化  
        String jsonString = objectMapper.writeValueAsString(person);  
        System.out.println("Serialized JSON: " + jsonString);  
        
        // 反序列化  
        Person deserializedPerson = objectMapper.readValue(jsonString, Person.class);  
        System.out.println("Deserialized Person: " + deserializedPerson);  
    }  
}

聲明:如本內(nèi)容中存在錯誤或不準(zhǔn)確之處,歡迎指正。

以上就是Java ApiPost請求返回406狀態(tài)碼問題的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Java ApiPost請求返回406的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java運(yùn)算符易混點(diǎn)之&&、||、&、|與?到底差在哪詳解

    Java運(yùn)算符易混點(diǎn)之&&、||、&、|與?到底差在哪詳解

    這篇文章主要介紹了Java運(yùn)算符易混點(diǎn)之&&、||、&、|與?到底差在哪的相關(guān)資料,強(qiáng)調(diào)在條件判斷和位運(yùn)算場景下的正確使用法,并提供示例代碼幫助理解大家理解,需要的朋友可以參考下
    2026-06-06
  • IntelliJ?IDEA軟件內(nèi)如何實(shí)現(xiàn)更新到最新版本

    IntelliJ?IDEA軟件內(nèi)如何實(shí)現(xiàn)更新到最新版本

    文章介紹了如何在IntelliJIDEA中更新到最新版本以及如何回到之前忽略的版本,解決辦法是通過選擇"IgnoreThisUpdate"來跳過舊版本,重復(fù)操作即可更新到最新版本
    2024-12-12
  • Java SpringMVC 異常處理SimpleMappingExceptionResolver類詳解

    Java SpringMVC 異常處理SimpleMappingExceptionResolver類詳解

    這篇文章主要介紹了SpringMVC 異常處理SimpleMappingExceptionResolver類詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Spring Boot 2.0 配置屬性自定義轉(zhuǎn)換的方法

    Spring Boot 2.0 配置屬性自定義轉(zhuǎn)換的方法

    這篇文章主要介紹了Spring Boot 2.0 配置屬性自定義轉(zhuǎn)換的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • JDK從8升級到21的問題集(附案例代碼)

    JDK從8升級到21的問題集(附案例代碼)

    JDK 8升級到JDK 21是一個(gè)重要的版本遷移,涉及語法、模塊化、API變更等多方面調(diào)整,這篇文章主要介紹了JDK從8升級到21問題的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • 解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理

    解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理

    本篇文章主要介紹了解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • MyBatis批量插入大量數(shù)據(jù)(1w以上)

    MyBatis批量插入大量數(shù)據(jù)(1w以上)

    MyBatis進(jìn)行批量插入數(shù)時(shí),一次性插入超過一千條的時(shí)候MyBatis開始報(bào)錯,本文主要介紹了MyBatis批量插入大量數(shù)據(jù)的解決方法,感興趣的可以了解一下
    2022-01-01
  • Java中ArrayList和Vector的區(qū)別

    Java中ArrayList和Vector的區(qū)別

    本文主要介紹了Java中ArrayList和Vector的區(qū)別,包括線程安全性、性能、同步機(jī)制、擴(kuò)容機(jī)制、遍歷方式等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-11-11
  • Spring中的循環(huán)依賴問題

    Spring中的循環(huán)依賴問題

    在Spring框架中,循環(huán)依賴是指兩個(gè)或多個(gè)Bean相互依賴,這導(dǎo)致在Bean的創(chuàng)建過程中出現(xiàn)依賴死鎖,為了解決這一問題,Spring引入了三級緩存機(jī)制,包括singletonObjects、earlySingletonObjects和singletonFactories
    2024-09-09
  • springboot2如何禁用自帶tomcat的session功能

    springboot2如何禁用自帶tomcat的session功能

    這篇文章主要介紹了springboot2如何禁用自帶tomcat的session功能,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

内丘县| 安乡县| 盐津县| 合山市| 茂名市| 大足县| 辽宁省| 汝城县| 出国| 金门县| 兴义市| 温宿县| 通化市| 章丘市| 毕节市| 台江县| 城口县| 遵义市| 澄迈县| 宁安市| 运城市| 陵水| 吉水县| 驻马店市| 康乐县| 苍溪县| 章丘市| 呼和浩特市| 周宁县| 苍南县| 英超| 旬邑县| 乐陵市| 原平市| 保山市| 旌德县| 罗城| 阜平县| 武冈市| 锡林浩特市| 友谊县|