色空大师 2023-11-06 21:10 采纳率: 42.3%
浏览 21
已结题

get请求返回的不是对象而是xml

get请求返回的不是对象而是xml

简单的get查询接口,代码如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.5.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>user-service</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
    </dependencies>

</project>

接口

@RestController
@RequestMapping("user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("getUserById/{id}")
    public User getUserById(@PathVariable Integer id){
        return userService.getUserById(id);
    }
}

实现类

package com.test.user.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.test.user.entity.User;
import com.test.user.mapper.UserMapper;
import com.test.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * @author清梦
 * @site www.xiaomage.com
 * @company xxx公司
 * @create 2023-11-05 19:43
 */
@Service
@Slf4j
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(Integer id) {
        User user = userMapper.getUserById(id);
        log.info("user:{}",user);
        return user;
    }
}


页面请求效果

img


控制台日志

img


问题:返回的为啥不是json而是xml?

  • 写回答

1条回答 默认 最新

  • qwqqq2 2023-11-06 21:25
    关注

    你提供的代码片段是一个 Maven 的 pom.xml 文件,这是 Java 项目中用于定义项目依赖、插件、属性等信息的文件。它并不是一个后端接口的代码,因此不会直接涉及到处理 HTTP GET 请求。

    如果你的 GET 请求返回的是 XML 格式的数据,而你期望得到的是 JSON 格式的对象,那么可能是服务器端配置的问题。在 Java 的 Spring Boot 框架中,你需要确保你的控制器(Controller)方法能够正确地序列化返回的对象为 JSON。

    例如,一个简单的 Spring Boot 控制器方法返回 JSON 对象的代码如下:

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.http.MediaType;
    
    @RestController
    public class MyController {
    
        @GetMapping(value = "/myendpoint", produces = MediaType.APPLICATION_JSON_VALUE)
        public MyObject getMyObject() {
            MyObject obj = new MyObject();
            // 设置 obj 的属性
            return obj;
        }
    }
    
    class MyObject {
        // 类属性
        // getter 和 setter 方法
    }
    
    
    

    在这个例子中,@GetMapping 注解定义了当发起 GET 请求到 /myendpoint 路径时,会调用 getMyObject 方法。produces = MediaType.APPLICATION_JSON_VALUE 指定了这个方法会生成 JSON 格式的响应。

    如果不指定 produces 属性,Spring Boot 会根据请求的 Accept 头部来决定返回的内容类型,如果客户端请求时没有明确指定 Accept 头部,或者服务端配置了 XML 作为默认的内容类型,那么就可能返回 XML 格式的数据。

    确保你的客户端在发起 GET 请求时,通过 HTTP 头部 Accept: application/json 明确告知服务器期望得到 JSON 格式的响应。同时,检查服务端的配置,确保它能够产生正确格式的响应。如果你使用的是 Spring Boot,那么通常它会根据你在类路径上包含的依赖自动配置消息转换器。如果类路径上有 Jackson 这样的库,Spring Boot 就会默认使用它来序列化对象为 JSON。如果同时存在 Jackson 和 JAXB(用于 XML 序列化),可能就需要你明确配置你希望使用的媒体类型。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月7日
  • 已采纳回答 11月6日
  • 创建了问题 11月6日