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

Spring Boot拓展XML格式的請求和響應(yīng)操作過程

 更新時間:2023年10月27日 10:19:45   作者:Miaow.Y.Hu  
在我們開發(fā)過程中,我們經(jīng)常使用的參數(shù)絕大多少事HTML和JSON格式的請求和響應(yīng)處理,但是我們在實際開發(fā)過程中,我們可能經(jīng)歷一些,比如對于XML格式的請求,本文給大家介紹Spring Boot拓展XML格式的請求和響應(yīng),感興趣的朋友一起看看吧

在我們開發(fā)過程中,我們經(jīng)常使用的參數(shù)絕大多少事HTML和JSON格式的請求和響應(yīng)處理,但是我們在實際開發(fā)過程中,我們可能經(jīng)歷一些,比如對于XML格式的請求,我們在后端應(yīng)該如何接收,并且如何將XML格式的參數(shù)變成對象,然后返回一個XML對象呢?

實現(xiàn)原理

我們在處理XML格式的數(shù)據(jù)的時候,需要知道我們最初學(xué)習(xí)Spring系列中的Spring MVC。因為在Spring MVC中我們有一個消息轉(zhuǎn)換器的概念,其主要負(fù)責(zé)處理不同格式的請求數(shù)據(jù)進(jìn)行處理,然后將這個數(shù)據(jù)包裝成為對象,以便提供更加友好的變成體驗。

我們研究Spring MVC的源碼可以得到在Spring MVC中定義了一個HttpMessageCoverter接口,抽象了消息轉(zhuǎn)換器對類型的判斷,對讀寫的判斷與操作,具體如下:

public interface HttpMessageConverter<T> {
    boolean canRead(Class<?> clazz, @Nullable MediaType mediaType);
    boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType);
    List<MediaType> getSupportedMediaTypes();
    T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException;
    void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException;
}
  • boolean canRead(Class<?> clazz, @Nullable MediaType mediaType):判斷給定的類和媒體類型是否可以被讀取。在處理請求時,用于判斷是否可以將請求的消息體轉(zhuǎn)換為指定的類對象。
  • boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType):判斷給定的類和媒體類型是否可以被寫入。在處理響應(yīng)時,用于判斷是否可以將指定的類對象轉(zhuǎn)換為響應(yīng)的消息體。
  • List<MediaType> getSupportedMediaTypes():獲取該消息轉(zhuǎn)換器支持的媒體類型列表。這些媒體類型表示該轉(zhuǎn)換器可以讀取或?qū)懭氲臄?shù)據(jù)格式。
  • - Tread(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException:將請求的消息體轉(zhuǎn)換為指定的類對象。該方法從 HttpInputMessage 中讀取請求的數(shù)據(jù),并將其轉(zhuǎn)換為指定的類對象。
  • void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException:將指定的類對象轉(zhuǎn)換為響應(yīng)的消息體。該方法將指定的類對象轉(zhuǎn)換為字節(jié)流,并寫入到 HttpOutputMessage 中作為響應(yīng)的數(shù)據(jù)。

我們知道,在HTTP中,Content-Type中有各種不同的格式定義,如果需要支持XML格式的消息轉(zhuǎn)換,那就的使用對應(yīng)的轉(zhuǎn)換器,并且我們知道在Spring MVC中默認(rèn)已經(jīng)有一套采用Jackson實現(xiàn)的轉(zhuǎn)換器MappingJackson2XmlHttpMessageConverter。

拓展實現(xiàn)

1. 引入XML消息轉(zhuǎn)換器

如果你是Spring 用戶,并非Spring Boot用戶,那么我們可以引入XML消息轉(zhuǎn)換器。

@Configuration
public class MessageConverterConfig1 extends WebMvcConfigurerAdapter {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml();
        builder.indentOutput(true);
        converters.add(new MappingJackson2XmlHttpMessageConverter(builder.build()));
    }
}

如果你是Spring Boot用戶,那么就直接加入相關(guān)依賴就行了,那么相關(guān)依賴就交于Spring Boot自動實現(xiàn)了:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

2. 定義對象與XML的關(guān)系

做好了基礎(chǔ)配置后,就可以定義XML內(nèi)容對應(yīng)的Java對象了:

@Data
@NoArgsConstructor
@AllArgsConstructor
@JacksonXmlRootElement(localName = "User")
public class User {

    @JacksonXmlProperty(localName = "name")
    private String name;
    @JacksonXmlProperty(localName = "age")
    private Integer age;

}

其中:@Data、@NoArgsConstructor@AllArgsConstructor是lombok簡化代碼的注解,主要用于生成get、set以及構(gòu)造函數(shù)。@JacksonXmlRootElement、@JacksonXmlProperty注解是用來維護(hù)對象屬性在xml中的對應(yīng)關(guān)系。

上述配置的User對象,其可以映射的Xml樣例如下(后續(xù)可以使用上述xml來請求接口):

<User>
    <name>miaow</name>
    <age>4</age>
</User>

3.創(chuàng)建一個接收xml請求的接口

完成了需要轉(zhuǎn)換的對象之后,我們可以編寫一個相關(guān)接口來接受XML并返回xml。

@Controller
public class UserController {
    @PostMapping(value = "/user",
            consumes = MediaType.APPLICATION_XML_VALUE,
            produces = MediaType.APPLICATION_XML_VALUE)
    @ResponseBody
    public User create(@RequestBody User user) {
        user.setName("姓名 : " + user.getName());
        user.setAge(user.getAge() + 20);
        return user;
    }
}

啟動項目之后,我們可以通過相關(guān)接口工具進(jìn)行請求發(fā)送,例如:

我采用的事ApiFox這個軟件,如果你有更好的軟件可以選擇您自己的軟件

到此這篇關(guān)于Spring Boot拓展XML格式的請求和響應(yīng)的文章就介紹到這了,更多相關(guān)Spring Boot XML請求和響應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中集成日志的四種方式

    SpringBoot中集成日志的四種方式

    在開發(fā)中,日志記錄是保障應(yīng)用程序健壯性、可維護(hù)性的重要手段,通過日志,我們可以記錄系統(tǒng)的運行狀態(tài)、捕獲異常并進(jìn)行調(diào)試,Spring Boot 默認(rèn)使用的是 Logback,但你也可以根據(jù)需求選擇其他框架,以下是幾種常用的日志集成方法,需要的朋友可以參考下
    2024-10-10
  • Springboot接收Get參數(shù)實踐過程

    Springboot接收Get參數(shù)實踐過程

    本文主要介紹了在Spring Boot中如何接收不同類型的請求參數(shù),包括在路徑中直接傳遞參數(shù)、跟在問號后面?zhèn)鬟f參數(shù)、使用Map接收參數(shù)、接收數(shù)組以及使用對象接收參數(shù)等方法
    2024-12-12
  • Java使用ANTLR4對Lua腳本語法校驗詳解

    Java使用ANTLR4對Lua腳本語法校驗詳解

    ANTLR是一個強(qiáng)大的解析器生成器,用于讀取、處理、執(zhí)行或翻譯結(jié)構(gòu)化文本或二進(jìn)制文件,下面就跟隨小編一起看看Java如何使用ANTLR4對Lua腳本語法校驗吧
    2025-04-04
  • java針對于時間轉(zhuǎn)換的DateUtils工具類

    java針對于時間轉(zhuǎn)換的DateUtils工具類

    這篇文章主要為大家詳細(xì)介紹了java針對于時間轉(zhuǎn)換的DateUtils工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • CentOS7環(huán)境下安裝JDK?1.8及解決wget命令缺失問題的辦法

    CentOS7環(huán)境下安裝JDK?1.8及解決wget命令缺失問題的辦法

    在CentOS 7中wget命令是一個非常實用的工具,用于從互聯(lián)網(wǎng)下載文件,然而默認(rèn)情況下,wget可能未安裝,這篇文章主要介紹了CentOS7環(huán)境下安裝JDK?1.8及解決wget命令缺失問題的相關(guān)資料,需要的朋友可以參考下
    2025-10-10
  • JAVA超級簡單的爬蟲實例講解

    JAVA超級簡單的爬蟲實例講解

    下面小編就為大家?guī)硪黄狫AVA超級簡單的爬蟲實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • JDK1.8、JDK1.7、JDK1.6區(qū)別看這里

    JDK1.8、JDK1.7、JDK1.6區(qū)別看這里

    這篇文章主要為大家詳細(xì)介紹了JDK1.8、JDK1.7、JDK1.6中的源碼,對比閱讀,發(fā)現(xiàn)修改問題以及改進(jìn)點,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C# 數(shù)據(jù)類型轉(zhuǎn)換

    C# 數(shù)據(jù)類型轉(zhuǎn)換

    這篇文章主要講解C語言中基本數(shù)據(jù)類型、字符串與其它數(shù)據(jù)類型以及常見的日期類型的轉(zhuǎn)換,希望能給大家做一個參考。希望能夠給你帶來幫助
    2021-07-07
  • 解決springboot依賴包中報錯unknown的問題

    解決springboot依賴包中報錯unknown的問題

    這篇文章主要介紹了解決springboot依賴包中報錯unknown的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • IE8+SpringMVC文件上傳防止JSON下載

    IE8+SpringMVC文件上傳防止JSON下載

    這篇文章主要介紹了IE8+SpringMVC文件上傳防止JSON下載的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評論

泾川县| 太康县| 高碑店市| 阆中市| 竹溪县| 蓬莱市| 四会市| 和硕县| 金堂县| 屏南县| 阿荣旗| 仲巴县| 临湘市| 寻乌县| 察哈| 攀枝花市| 郁南县| 丰县| 皋兰县| 临沭县| 平遥县| 内江市| 潍坊市| 安康市| 肥西县| 平昌县| 涞源县| 讷河市| 北碚区| 炉霍县| 德庆县| 凭祥市| 辽源市| 万安县| 台山市| 固原市| 石景山区| 乡城县| 鹿邑县| 汉川市| 内江市|