Welkom bij het voorbeeld van Spring Restful Web Services XML en JSON. Enige tijd geleden schreef ik een artikel over Spring REST JSON en kreeg ik veel opmerkingen waarin werd gevraagd hoe het programma te wijzigen om XML te ondersteunen. Ik kreeg ook enkele e-mails waarin werd gevraagd hoe de toepassing zowel XML als JSON kan ondersteunen.
Spring REST XML en JSON
I thought to write an article about Spring REST XML and JSON application where I will show you how easily we can extend the existing application to support XML. Since I will be making changes to the existing project, make sure you first download it from below link.
Download Spring Restful Webservice Project
Voer nu de volgende wijzigingen uit in het configuratiebestand van de Spring-bean.
-
Definieer een bean van het type
Jaxb2RootElementHttpMessageConverter
.<beans:bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"> </beans:bean>
-
Voeg de hierboven geconfigureerde bean toe aan de eigenschap
messageConverters
vanRequestMappingHandlerAdapter
.<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <beans:property name="messageConverters"> <beans:list> <beans:ref bean="jsonMessageConverter"/> <beans:ref bean="xmlMessageConverter"/> </beans:list> </beans:property> </beans:bean>
Na bovenstaande wijzigingen zal ons uiteindelijke Spring bean-configuratiebestand er als volgt uitzien. servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="https://www.springframework.org/schema/mvc"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="https://www.springframework.org/schema/beans"
xmlns:context="https://www.springframework.org/schema/context"
xsi:schemaLocation="https://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- Configure to plugin JSON as request and response in method handler -->
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<beans:ref bean="jsonMessageConverter"/>
<beans:ref bean="xmlMessageConverter"/>
</beans:list>
</beans:property>
</beans:bean>
<!-- Configure bean to convert JSON to POJO and vice versa -->
<beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</beans:bean>
<beans:bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter">
</beans:bean>
<context:component-scan base-package="com.journaldev.spring.controller" />
</beans:beans>
We weten dat voor het werken met JAXB-mapping voor een klasse, we deze moeten annoteren met de @XmlRootElement
-annotatie. Voeg dit toe aan onze Employee
-modelklasse. Employee.java
@XmlRootElement
public class Employee implements Serializable{
//geen verandering in code
}
Dat is het, we zijn KLAAR. Onze Spring-applicatie zal zowel JSON als XML ondersteunen. Het zal zelfs XML-verzoeken met JSON-respons en vice versa ondersteunen. Hieronder staan enkele schermafbeeldingen die dit in actie tonen. LET OP: Ik gebruik de Postman Chrome-applicatie hiervoor, je kunt elke REST-client gebruiken voor deze test.
1. **XML-respons**: Zorg ervoor dat je de Accept-header instelt op “application/xml”.
2. **JSON-respons**: Zorg ervoor dat je de Accept-header instelt op “application/json”.
3. **XML-verzoek met JSON-respons**: Zorg ervoor dat de Accept-header is ingesteld op “application/json” en de Content-Type-header op “text/xml”, zoals te zien is in onderstaande afbeeldingen.
Dat is alles voor het voorbeeld van Spring Restful web services voor het ondersteunen van zowel XML als JSON. Je kunt zien hoe eenvoudig het is om het Spring-framework uit te breiden, dit is een van de belangrijkste redenen voor de populariteit van het Spring-framework.
Source:
https://www.digitalocean.com/community/tutorials/spring-rest-xml-and-json-example