首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring MVC REST - 根据请求内容类型返回xml或json

关于Spring MVC REST中根据请求内容类型返回XML或JSON的问题,我们可以通过以下方式实现:

  1. 首先,确保已经在项目中引入了Spring MVC相关的依赖,例如: <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>@RestController @RequestMapping("/api") public class MyController { // ... }@GetMapping("/my-resource") public ResponseEntity<Object> getMyResource() { // ... }@GetMapping("/my-resource") public ResponseEntity<Object> getMyResource(@RequestHeader(value = "Accept", defaultValue = "application/json") String accept) { MyResource myResource = new MyResource(); // ... if (accept.contains("application/xml")) { return ResponseEntity.ok().contentType(MediaType.APPLICATION_XML).body(myResource); } else { return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(myResource); } }在上述代码中,我们通过@RequestHeader注解获取请求头中的Accept字段,然后根据其中的内容类型来判断返回XML还是JSON格式的数据。
  2. 在Spring Boot应用中,可以使用@RestController注解来创建RESTful API的控制器,例如:
  3. 在控制器中,可以使用@GetMapping@PostMapping等注解来定义具体的API接口,例如:
  4. 在返回的ResponseEntity中,可以设置HTTP响应的内容类型,例如:

需要注意的是,在实际开发中,我们通常会使用@ResponseBody注解来将Java对象自动转换为JSON或XML格式的数据,例如:

代码语言:txt
复制
@GetMapping("/my-resource")
@ResponseBody
public MyResource getMyResource() {
    MyResource myResource = new MyResource();
    // ...
    return myResource;
}

在这种情况下,我们可以使用Jackson或Jaxb等库来实现Java对象到JSON或XML的自动转换。同时,我们可以使用Spring Boot的ContentNegotiationConfigurer配置类来自定义内容类型的策略,例如:

代码语言:txt
复制
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true)
                .defaultContentType(MediaType.APPLICATION_JSON).mediaType("xml", MediaType.APPLICATION_XML)
                .mediaType("json", MediaType.APPLICATION_JSON);
    }
}

在上述代码中,我们通过configureContentNegotiation方法来自定义内容类型的策略,例如,我们可以将请求参数中的mediaType作为决定返回数据格式的依据,并且将默认的数据格式设置为JSON。

总之,在Spring MVC REST中根据请求内容类型返回XML或JSON的问题,我们可以通过上述方式来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RESTful风格的应用

本节讲解一个全新的话题,RESTful开发风格。 REST :全称Representational State Transfer(表现层状态转换),资源在网络中,以某种表现形式进行状态转移。听起来很难理解,其实说白了就是在我们web环境下,如果你要获取某个图片,js,网页这些资源的时候,就要以url的形式进行表现。我们访问一个图片的网址,那这个资源返回的就自然是一张图片,如果访问的是一个CSS,那返回的就是一个CSS。好像这种设计理念对于我们的web应用来说是在再基础不过的东西。其实这是rest给我们提出来的一个设计理念,在web环境以URL的方式,来进行资源的传递。那么基于这种REST的理念,注意,是理念,不是具体的实现。

03

【转】使用 Spring HATEOAS 开发 REST 服务原文

绝大多数开发人员对于 REST 这个词都并不陌生。自从 2000 年 Roy Fielding 在其博士论文中创造出来这个词之后,REST 架构风格就很快地流行起来,已经成为了构建 Web 服务时应该遵循的事实标准。很多 Web 服务和 API 都宣称满足了 REST 架构风格的要求,即所谓的“RESTful”服务。不过就如同其他很多流行的概念一样,不少人对于 REST 的含义还是存在或多或少的种种误解。REST 在某些时候被当成了一种营销的手段。不少所谓的“RESTful” Web 服务或 API 实际上并不满足 REST 架构风格的要求。这其中的部分原因在于 REST 的含义比较复杂,包含很多不同方面的内容。本文首先对 REST 架构做一个简单的说明以澄清某些误解。

01
领券