spring 如何使用rest api 请求list类型和响应list类型数据(更新)

16 篇文章 0 订阅

网上好多关于该类问题提问,但好像没有好的答案,自己一直也很疑惑,今天终于在spring实战(四次版,翻译版),P438页找到了答案

这个问题其实就是一个消息格式转换的问题,spring提供了消息转换器可以让json和java对象之间转换,

如果我们使用的pojo对象你会发现对象转换正常,但是我们使用Lsit或Map作为数据对象时候会出现415媒体类型错误

 

@RequsetBody和@ResponseBody其实就是两类消息转换器,使用指定格式对消息进行转换

如果想自定义请求的消息转换格式可以使用@RequestMapping(consumes="application/json")

如果想指定响应的消息转换格式可以使用@RequestBodyMapping(produces="application/json")

或者直接使用@RestController注解,就不必为每个方法添加@RequestBody和@ResponseBody

当然如果使用的xml格式可以使用application/xml,甚至使用*/*

测试代码如下:


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("/rest")
public class RestApiContoller {

    @RequestMapping(value = "/api",method = RequestMethod.POST,
            produces = "application/json",
            consumes = "application/json"
    )
    public @ResponseBody
    List<String> testArrayData(@RequestBody List<String> strgs){
        return strgs;
    }
}

今天去测试了下公司代码,公司代码不是使用的Spring的注解规范,使用的JAX-RS的注解规范,发现该方案并不能行

折腾好长时间才搞明白,jax-rs规范有个配置<jaxrs:provider><bean ref="jsonProvider" /></jaxrs:provider>

不同集成方式可能配置形式不同,但是关键信息就是要配置json的provider消息转换器,当然如果需要先关的依赖也得添加

关于CXF的JAX-RS我自己也是不是很懂,需要了解的话,可以访问官网了解下:

http://cxf.apache.org/docs/jax-rs.html

其中和CXF相关的两个java扩展协议

JAX-RS : java extension REST

JAX-WS: java extension Web Service

这两个大致意思是我凭自己的理解猜的,哈哈!

百度下别人给的全称:

JAX-WS:全称是JavaTM API for XML-Based Web Services

JAX-RS :全称是 JavaTM API for RESTful Web Services

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot是一个使用Java编写的开发框架,可以帮助开发人员快速构建基于REST风格的APIRESTful是一种接口规范或接口风格,它使用URI标识资源,并采用统一的标准资源操作接口,例如CRUD(Create、Retrieve、Update、Delete)。 Postman是一个常用的API开发和测试工具,可以发送HTTP请求并查看响应,以测试和调试REST API。你可以使用Postman来向Spring Boot的RESTful API发送请求,并查看API响应。通过Postman,你可以选择不同的HTTP方法(如GET、POST、PUT、DELETE)来对API进行操作。对于幂等性方法(如GET、HEAD、OPTIONS),它们用于获取资源,而非幂等性方法(如POST、PUT、DELETE)则用于更改资源状态。 所以,使用Spring Boot和Postman可以方便地构建和测试RESTful API。你可以使用Postman来发送不同HTTP方法的请求,并验证API的功能和响应。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Java-SpringBoot-Rest-MySQL:使用Java Spring Boot Rest MySQL创建REST API MySQL和使用的技术是Intellij ...](https://download.csdn.net/download/weixin_42097450/18519520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [springboot RESTful API接口demo](https://blog.csdn.net/Little_Donkey_/article/details/118192781)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月玲珑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值