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

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

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

一、前言

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

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

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

三、問題描述

3.1 問題截圖

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

在這里插入圖片描述

3.2 錯(cuò)誤簡(jiǎn)介

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

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

3.2.2 序列化和反序列化

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

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

3.3 后端問題位置

后臺(tái)沒有明顯報(bào)錯(cuò)

@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)識(shí)問題

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

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

在這里插入圖片描述

4.2 解決過程

4.2.1 查找原因

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

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

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

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

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

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

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

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

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

4.2.3 定位成功

Result類沒有使用 getter 和 setter方法

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

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

如圖注解加上或者自己寫 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 等庫需要注意

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

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

在這里插入圖片描述

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

例子如下:

import com.fasterxml.jackson.databind.ObjectMapper;  

public class Main {  
    public static void main(String[] args) throws Exception {  
        ObjectMapper objectMapper = new ObjectMapper();  
        
        // 創(chuàng)建對(duì)象  
        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)容中存在錯(cuò)誤或不準(zhǔn)確之處,歡迎指正。

以上就是Java ApiPost請(qǐng)求返回406狀態(tài)碼問題的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Java ApiPost請(qǐng)求返回406的資料請(qǐng)關(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)算場(chǎng)景下的正確使用法,并提供示例代碼幫助理解大家理解,需要的朋友可以參考下
    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類詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(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)換的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • JDK從8升級(jí)到21的問題集(附案例代碼)

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

    JDK 8升級(jí)到JDK 21是一個(gè)重要的版本遷移,涉及語法、模塊化、API變更等多方面調(diào)整,這篇文章主要介紹了JDK從8升級(jí)到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ù)的格式化問題處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • MyBatis批量插入大量數(shù)據(jù)(1w以上)

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

    MyBatis進(jìn)行批量插入數(shù)時(shí),一次性插入超過一千條的時(shí)候MyBatis開始報(bào)錯(cuò),本文主要介紹了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í)緩存機(jī)制,包括singletonObjects、earlySingletonObjects和singletonFactories
    2024-09-09
  • springboot2如何禁用自帶tomcat的session功能

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

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

最新評(píng)論

稷山县| 双江| 建德市| 时尚| 新津县| 乌鲁木齐市| 新巴尔虎右旗| 黄龙县| 许昌市| 海原县| 望都县| 旌德县| 宝兴县| 大同县| 新民市| 哈尔滨市| 潢川县| 衡山县| 五指山市| 霍林郭勒市| 舒城县| 钟祥市| 定边县| 安新县| 积石山| 新和县| 阿勒泰市| 徐水县| 体育| 平定县| 铜川市| 崇文区| 安陆市| 定兴县| 绥江县| 遂宁市| 临朐县| 辽宁省| 宁河县| 双辽市| 浠水县|