Bienvenue dans l’exemple de services Web Spring Restful XML et JSON. Il y a quelque temps, j’ai écrit un article sur Spring REST JSON, et j’ai reçu de nombreux commentaires demandant comment modifier le programme pour prendre en charge XML. J’ai également reçu des e-mails demandant comment faire en sorte que l’application prenne en charge à la fois XML et JSON.
Spring REST XML et 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.
Téléchargez le projet Spring Restful Webservice
Maintenant, effectuez les modifications suivantes dans le fichier de configuration du bean Spring.
-
Définissez un bean de type
Jaxb2RootElementHttpMessageConverter
.<beans:bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"> </beans:bean>
-
Ajoutez le bean configuré ci-dessus à la propriété
messageConverters
deRequestMappingHandlerAdapter
.<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>
Après les changements ci-dessus, notre fichier de configuration final pour le bean Spring ressemblera à ce qui suit. 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>
Nous savons que pour travailler avec la marshaling JAXB pour une classe, nous devons l’annoter avec l’annotation @XmlRootElement
. Ajoutez donc ceci à notre classe modèle Employee
. Employee.java
@XmlRootElement
public class Employee implements Serializable{
//aucun changement dans le code
}
C’est tout, nous avons TERMINÉ. Notre application Spring prendra en charge à la fois JSON et XML. Elle prendra même en charge une demande XML avec une réponse JSON et vice versa. Voici quelques captures d’écran montrant cela en action. REMARQUE : J’utilise l’application Postman Chrome pour cela, vous pouvez utiliser n’importe quel client REST pour ce test. 1. Réponse XML : Assurez-vous de passer l’en-tête Accept en « application/xml ». 2. Réponse JSON : Assurez-vous de passer l’en-tête Accept en « application/json ».
3. Demande XML avec réponse JSON : Assurez-vous que l’en-tête Accept est « application/json » et que l’en-tête Content-Type est « text/xml » comme indiqué dans les images ci-dessous.
C’est tout pour l’exemple de services Web RESTful Spring pour prendre en charge à la fois XML et JSON. Vous pouvez voir à quel point il est facile d’étendre le framework Spring, c’est l’une des principales raisons de la popularité du framework Spring.
Source:
https://www.digitalocean.com/community/tutorials/spring-rest-xml-and-json-example