记Swagger的一次错误,接口为Get请求,Swagger接口却以body传入。

本文探讨了如何修正SpringBoot接口中GET请求的参数问题,通过修改@ApiImplicitParams的paramType,解决了将商品详情接口从GET改为POST的需求,并分享了调整后的Swagger接口展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们看看我的SpringBoot接口

@ApiOperation("商品详情")
    @ApiResponses(@ApiResponse(code = 200, message = "ok", response = GoodsDetailsVo.class))
    @GetMapping("detail")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "用户id", name = "userId"),
            @ApiImplicitParam(value = "商品id", name = "id"),
    })
    public Object detail(@LoginUser Integer userId,
                         @NotNull Integer id) {
        // 商品信息
        LitemallGoods info = goodsService.findById(id);

        // 商品属性
        Callable<List> goodsAttributeListCallable = () -> goodsAttributeService.queryByGid(id);

        // 商品规格 返回的是定制的GoodsSpecificationVo
        Callable<Object> objectCallable = () -> goodsSpecificationService.getSpecificationVoList(id);

然后我们看看Swagger接口

在这里插入图片描述

百度了之后,都建议改get请求为post,这不能解决实质问题呀,我不可能所有请求都用post呀。

后来我发现是自己的参数设置请求类型确实有问题,paramType默认是body传入,所有我只需要修改为下面这样

@ApiOperation("商品详情")
    @ApiResponses(@ApiResponse(code = 200, message = "ok", response = GoodsDetailsVo.class))
    @GetMapping("detail")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "用户id", name = "userId", paramType = "query"),
            @ApiImplicitParam(value = "商品id", name = "id", paramType = "query"),
    })
    public Object detail(@LoginUser Integer userId,
                         @NotNull Integer id) {
        // 商品信息
        LitemallGoods info = goodsService.findById(id);

        // 商品属性
        Callable<List> goodsAttributeListCallable = () -> goodsAttributeService.queryByGid(id);

修改后的swagger接口
在这里插入图片描述

<think>好的,用户问的是“swagger显示的接口是什么”。首先,我需要明确Swagger是什么。Swagger是一个用于生成、描述和调用RESTful接口的开源工具,它可以帮助开发者自动化文档生成和接口测试。所以用户的问题应该是关于如何在Swagger中查看接口信息。 接下来,我需要详细解释Swagger显示的接口内容。通常,Swagger UI会展示所有API的端点、请求方法(如GET、POST)、参数(路径参数、查询参数、请求体等)、响应示例以及认证方式等。例如,当用户访问Swagger的UI界面时,可以看到每个接口的详细信息,包括请求的URL、需要的参数、可能的响应码和示例请求/响应数据。 然后,我需要考虑用户可能的背景。用户可能是刚开始使用Swagger,或者在开发过程中遇到了问题,想要了解如何通过Swagger查看接口文档。也有可能用户希望确认他们的API是否正确地被Swagger文档化,或者想学习如何利用Swagger进行接口测试。 接下来要确保回答准确且全面。需要分步骤说明如何查看接口,比如启动服务后访问特定URL,比如http://localhost:8080/swagger-ui.html,然后展开各个接口查看详细信息。同时,要提到Swagger支持的注解,如@ApiOperation、@ApiParam等,这些注解可以帮助生成更详细的文档。 还需要考虑用户可能的后续问题,比如如何自定义Swagger的显示内容,如何添加描述信息,或者如何测试接口。因此,在相关问题部分,应该包括如何配置Swagger、如何添加注释、如何测试接口以及如何解决常见问题等。 最后,要确保回答符合格式要求,使用中文,结构清晰,示例代码正确,并且在末尾生成3-5个相关问题。例如,相关问题可以涉及配置步骤、注解使用、接口测试方法、常见问题排查等。</think>Swagger 是一个用于自动生成和展示 RESTful API 文档的工具,它会根据代码中的注解或配置,动态展示接口的详细信息。以下是 Swagger 显示的典型接口内容: 1. **接口路径(URL)** 例如:`/api/users`,支持的 HTTP 方法(GET/POST/PUT/DELETE 等)会用不同颜色区分。 2. **接口描述** 包括接口功能描述、参数说明、返回值格式等,例如: - `GET /api/users`:获取用户列表 - `POST /api/users`:创建新用户 3. **参数详情** - 路径参数(Path Parameters):如 `/api/users/{id}` - 查询参数(Query Parameters):如 `?page=2` - 请求体(Request Body):如 JSON 格式的用户数据 4. **响应示例** - 成功响应(如 200)和错误响应(如 404)的示例数据 - 数据格式(JSON/XML)和字段说明 5. **接口调试功能** 可直接在 Swagger UI 中输入参数并发送请求,实时查看响应结果。 **示例代码(Spring Boot 中使用 Swagger 注解)**: ```java @RestController @RequestMapping("/api/users") public class UserController { @ApiOperation(value = "获取用户列表", notes = "返回所有用户信息") @GetMapping public List<User> getAllUsers() { return userService.findAll(); } @ApiOperation(value = "创建用户", notes = "根据传入的用户信息创建新用户") @PostMapping public User createUser(@ApiParam(value = "用户对象", required = true) @RequestBody User user) { return userService.save(user); } } ``` **使用步骤**: 1. 在项目中引入 Swagger 依赖(如 Springfox 或 Springdoc)。 2. 启动项目后访问 `http://localhost:8080/swagger-ui.html`(默认路径)。 3. 在页面中查看或测试接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值