国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot拓展XML格式的請(qǐng)求和響應(yīng)

這篇具有很好參考價(jià)值的文章主要介紹了Spring Boot拓展XML格式的請(qǐng)求和響應(yīng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

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

實(shí)現(xiàn)原理

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

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

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

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

拓展實(shí)現(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自動(dòng)實(shí)現(xiàn)了:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>
2. 定義對(duì)象與XML的關(guān)系

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

@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簡(jiǎn)化代碼的注解,主要用于生成get、set以及構(gòu)造函數(shù)。@JacksonXmlRootElement、@JacksonXmlProperty注解是用來維護(hù)對(duì)象屬性在xml中的對(duì)應(yīng)關(guān)系。

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

<User>
    <name>miaow</name>
    <age>4</age>
</User>
3.創(chuàng)建一個(gè)接收xml請(qǐng)求的接口

完成了需要轉(zhuǎn)換的對(duì)象之后,我們可以編寫一個(gè)相關(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;
    }
}

啟動(dòng)項(xiàng)目之后,我們可以通過相關(guān)接口工具進(jìn)行請(qǐng)求發(fā)送,例如:
Spring Boot拓展XML格式的請(qǐng)求和響應(yīng),# Spring,spring boot,xml,后端
我采用的事ApiFox這個(gè)軟件,如果你有更好的軟件可以選擇您自己的軟件文章來源地址http://www.zghlxwxcb.cn/news/detail-733781.html

到了這里,關(guān)于Spring Boot拓展XML格式的請(qǐng)求和響應(yīng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot整合Log4j2.xml的問題

    Spring Boot整合Log4j2.xml的時(shí)候返回以下錯(cuò)誤: Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4j 進(jìn)行了解決。 Spring Boot整合Log4j2.xml經(jīng)過以下操作: 配置 log4j2.xml 添加到 src/main/resources 目錄下 Gradle的配置:在 build.gradle 中添加: 啟動(dòng)應(yīng)用,返回以

    2024年02月09日
    瀏覽(19)
  • Spring Boot入門(10):Mybatis之XML映射文件>、<=等特殊符號(hào)使用 | 保姆級(jí)教程

    Spring Boot入門(10):Mybatis之XML映射文件>、<=等特殊符號(hào)使用 | 保姆級(jí)教程

    ? ? ? ? 在Mybatis的XML映射文件中,我們經(jīng)常需要使用一些特殊符號(hào)來完成SQL語句的拼接,比如小于號(hào)“”、小于等于號(hào)“=”等。然而,由于這些符號(hào)在XML中有特殊的含義,因此直接在映射文件中使用可能會(huì)導(dǎo)致編譯錯(cuò)誤或者運(yùn)行時(shí)異常。那么,如何才能正確地使用這些特殊

    2024年02月11日
    瀏覽(39)
  • Spring Boot入門(09):如何使用MyBatis的XML配置方式實(shí)現(xiàn)MySQL的增刪改查操作?

    Spring Boot入門(09):如何使用MyBatis的XML配置方式實(shí)現(xiàn)MySQL的增刪改查操作?

    ????????想要快速高效地開發(fā)Java Web應(yīng)用程序,選擇使用Spring Boot和MyBatis無疑是明智之舉。本篇文章將教你使用MyBatis的XML配置方式,結(jié)合MySQL數(shù)據(jù)庫,實(shí)現(xiàn)常見的增刪改查操作,讓你的應(yīng)用程序更加實(shí)用和強(qiáng)大。跟隨本文一起來探索MyBatis在Spring Boot中的力量吧! ? ? ? ?

    2024年02月11日
    瀏覽(33)
  • IDEA創(chuàng)建spring boot項(xiàng)目無法加載出maven里的pom.xml,而是settings.gradle

    IDEA創(chuàng)建spring boot項(xiàng)目無法加載出maven里的pom.xml,而是settings.gradle

    在創(chuàng)建的maven項(xiàng)目里找不到pom.xml文件而是settings.gradle,如下圖所示: 原因和解決方法: 是因?yàn)樵趧?chuàng)建Springboot項(xiàng)目的時(shí)候type里選的是Gradle,gradle和maven又不一樣,換成maven就行了,具體操作如下圖所示: 在用idea創(chuàng)建maven項(xiàng)目時(shí),在Project Metadata界面Type選項(xiàng)下唯有Maven和Maven PO

    2024年02月09日
    瀏覽(85)
  • spring boot如何實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)進(jìn)行請(qǐng)求加密、響應(yīng)加密處理

    參考文檔:https://blog.csdn.net/zhuocailing3390/article/details/125054315 通過實(shí)現(xiàn) RequestBodyAdvice 接口,對(duì)前端請(qǐng)求的參數(shù)進(jìn)行解密并且重新讓真實(shí)結(jié)構(gòu)的數(shù)據(jù)進(jìn)入到Controller中; 通過實(shí)現(xiàn) ResponseBodyAdvice 接口,將響應(yīng)的參數(shù)進(jìn)行加密,返回到前端; 擴(kuò)展: 可以通過自定義注解,實(shí)現(xiàn)對(duì)指

    2024年02月07日
    瀏覽(29)
  • 解決Spring Boot項(xiàng)目中pom.xml環(huán)境配置 打包后生效 但idea版本運(yùn)行無效的問題

    解決Spring Boot項(xiàng)目中pom.xml環(huán)境配置 打包后生效 但idea版本運(yùn)行無效的問題

    上文 Spring Boot中通過maven進(jìn)行多環(huán)境配置 中我們通過pom.xml配置了環(huán)境選擇 但這個(gè)只有在打包出來的jar中生效 我們直接通過 idea啟動(dòng) 這個(gè)東西確實(shí)是有點(diǎn)問題 其實(shí) 我們執(zhí)行一下 compile 手工編譯一下 然后重新啟動(dòng) 很明顯 我們這里配置就已經(jīng)生效了 這個(gè)就是 我們每次改pom.x

    2024年02月10日
    瀏覽(27)
  • Spring Boot入門(09):使用MyBatis的XML配置方式訪問MySQL實(shí)現(xiàn)增刪改查 | 超級(jí)詳細(xì),建議收藏

    Spring Boot入門(09):使用MyBatis的XML配置方式訪問MySQL實(shí)現(xiàn)增刪改查 | 超級(jí)詳細(xì),建議收藏

    ????????想要快速高效地開發(fā)Java Web應(yīng)用程序,選擇使用Spring Boot和MyBatis無疑是明智之舉。本篇文章將教你使用MyBatis的XML配置方式,結(jié)合MySQL數(shù)據(jù)庫,實(shí)現(xiàn)常見的增刪改查操作,讓你的應(yīng)用程序更加實(shí)用和強(qiáng)大。跟隨本文一起來探索MyBatis在Spring Boot中的力量吧! ? ? ? ?

    2024年02月13日
    瀏覽(21)
  • Spring Boot入門(10):Mybatis之XML映射文件中如何使用特殊符號(hào)?揭秘<、<=等符號(hào)的正確使用方法!

    Spring Boot入門(10):Mybatis之XML映射文件中如何使用特殊符號(hào)?揭秘<、<=等符號(hào)的正確使用方法!

    ? ? ? ? 在Mybatis的XML映射文件中,我們經(jīng)常需要使用一些特殊符號(hào)來完成SQL語句的拼接,比如小于號(hào)“”、小于等于號(hào)“=”等。然而,由于這些符號(hào)在XML中有特殊的含義,因此直接在映射文件中使用可能會(huì)導(dǎo)致編譯錯(cuò)誤或者運(yùn)行時(shí)異常。那么,如何才能正確地使用這些特殊

    2024年02月09日
    瀏覽(33)
  • Spring Boot進(jìn)階(66):翻轉(zhuǎn)編程思路,探索Spring Boot響應(yīng)式編程和WebFlux

    Spring Boot進(jìn)階(66):翻轉(zhuǎn)編程思路,探索Spring Boot響應(yīng)式編程和WebFlux

    ????????本文將介紹Spring Boot中的響應(yīng)式編程以及WebFlux的使用。響應(yīng)式編程是一種編程范式,它強(qiáng)調(diào)數(shù)據(jù)流的異步處理和響應(yīng)式編程模型,能夠提高程序性能和可伸縮性。WebFlux是Spring框架中的一個(gè)響應(yīng)式Web框架,它支持響應(yīng)式編程模式,能夠輕松地處理高并發(fā)的Web請(qǐng)求。

    2024年02月09日
    瀏覽(24)
  • Spring Boot進(jìn)階(53):Spring Boot 如何防止重復(fù)請(qǐng)求?| 超級(jí)詳細(xì),建議收藏

    ????????在日常業(yè)務(wù)開發(fā)中,處理重復(fù)請(qǐng)求應(yīng)該是我們需要經(jīng)常注意的,在某些情況下是可能重復(fù)發(fā)送的,如果是查詢類操作并無大礙,但其中有些請(qǐng)求是涉及寫入操作的,一旦重復(fù)了,很可能會(huì)導(dǎo)致很嚴(yán)重的后果,例如交易的接口如果重復(fù)請(qǐng)求就可能會(huì)重復(fù)下單。還比如

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包