欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、前言

  • 使用ApiPost請求的時候遇到問題記錄
  • 這是記錄思考過程,看結(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ā)送一個請求,并且在請求頭中指定了一個或多個可接受的內(nèi)容類型(通過 Accept 頭字段)
  • ?? 而服務(wù)器無法提供任何這些類型的內(nèi)容時,就會返回這個狀態(tài)碼。

3.2.2 序列化和反序列化

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

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

3.3 后端問題位置

后臺沒有明顯報錯

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

四、解決方案:

4.1 認識問題

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

如圖代碼生成器生成的實體類就有

在這里插入圖片描述

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)配置好了,平時也沒遇到這個問題,代碼也是自動生成的
  • 所以肯定是自己寫的返回的類型少了什么導(dǎo)致無法轉(zhuǎn)換

4.2.3 定位成功

Result類沒有使用 getter 和 setter方法

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

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

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

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

在這里插入圖片描述

4.3.2.3 結(jié)果

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

在這里插入圖片描述

五、總結(jié):

5.1 注意事項

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

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

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

5.1.2 Jackson、Gson 等庫需要注意

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

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

在這里插入圖片描述

  • 與序列化庫的兼容:如 Jackson 和 Gson 等庫在處理 Java 對象時,通常會使用 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)碼問題的解決方案的詳細內(nèi)容,更多關(guān)于Java ApiPost請求返回406的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Java中static和非static的區(qū)別

    淺談Java中static和非static的區(qū)別

    這篇文章主要介紹了Java中static和非static的相關(guān)內(nèi)容,小編覺得還是很不錯的,這里分享給大家,需要的朋友可以參考下。
    2017-10-10
  • Java后端傳時間戳給前端的三種方式

    Java后端傳時間戳給前端的三種方式

    時間戳是一份能夠表示一份數(shù)據(jù)在一個特定時間點已經(jīng)存在的完整的可驗證的數(shù)據(jù),本文給大家介紹了Java后端傳時間戳給前端的三種方式,并通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-12-12
  • Spring Bean Scope 有狀態(tài)的Bean與無狀態(tài)的Bean

    Spring Bean Scope 有狀態(tài)的Bean與無狀態(tài)的Bean

    這篇文章主要介紹了Spring Bean Scope 有狀態(tài)的Bean與無狀態(tài)的Bean,每個用戶有自己特有的一個實例,在用戶的生存期內(nèi),bean保持了用戶的信息,下面來了解有狀態(tài)和無狀態(tài)的區(qū)別吧
    2022-01-01
  • Java關(guān)鍵字final、static使用總結(jié)

    Java關(guān)鍵字final、static使用總結(jié)

    final方法不能被子類的方法覆蓋,但可以被繼承。用static修飾的代碼塊表示靜態(tài)代碼塊,當(dāng)Java虛擬機(JVM)加載類時,就會執(zhí)行該代碼塊,下面通過本文給大家分享Java關(guān)鍵字final、static使用總結(jié),感興趣的朋友一起看看吧
    2017-07-07
  • 異常點/離群點檢測算法——LOF解析

    異常點/離群點檢測算法——LOF解析

    這篇文章主要介紹了異常點/離群點檢測算法——LOF解析,通過圖解文字描述的方式詳細的解析了該算法,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 利用SpringMVC接收復(fù)雜對象和多個文件(前端使用JQuery)

    利用SpringMVC接收復(fù)雜對象和多個文件(前端使用JQuery)

    這篇文章主要介紹了利用SpringMVC接收復(fù)雜對象和多個文件(前端使用JQuery),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java中的MapStruct用法詳解

    Java中的MapStruct用法詳解

    這篇文章主要介紹了Java中的MapStruct用法詳解,MapStuct的使用非常簡單,把對應(yīng)的jar包引入即可,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 5分鐘搭建SpringCloud Eureka服務(wù)注冊中心的實現(xiàn)

    5分鐘搭建SpringCloud Eureka服務(wù)注冊中心的實現(xiàn)

    這篇文章主要介紹了5分鐘搭建SpringCloud Eureka服務(wù)注冊中心的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot多環(huán)境配置方式的新手教程

    SpringBoot多環(huán)境配置方式的新手教程

    我們平時做項目的時候,一般都會分幾套環(huán)境,每一套環(huán)境的配置都是不一樣的,所以這篇文章就來為大家詳細介紹一下SpringBoot多環(huán)境配置方式,希望對大家有所幫助
    2023-11-11
  • 字節(jié)二面SpringBoot可以同時處理多少請求

    字節(jié)二面SpringBoot可以同時處理多少請求

    這篇文章主要為大家介紹了字節(jié)二面之SpringBoot可以同時處理多少請求面試分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07

最新評論