全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

SpringBoot构建Restful service完成Get和Post请求

一个基本的RESTfule service最进场向外提供的请求Method就是Get和Post。

在Get中,常用的都会在请求上带上参数,或者是路径参数。响应Json。

在Post中,常用的会提交form data或者json data作为参数,响应Json。

1. Get请求,url传参,返回json。

先准备一个请求后,响应的对象。

package com.example.demo;
public class Echo {
  private final long id;
  private final String content;
  public Echo(long id, String content) {
    this.id = id;
    this.content = content;
  }
  public long getId() {
    return this.id;
  }
  public String getContent() {
    return this.content;
  }
}

准备一个用来接收请求的EchoController(名字可以根据实际情况写),为它增加@RestController注解,表示这是一个处理RESTful请求的响处理类。

增加@RequestMapping,为本Controller提供一个根url,当然可以不写,写这个是为了更好的将同一种处理的url归在一类,本Controller其他的处理方法对应的url中就不需要重复写。

package com.example.demo;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ModelAttribute;
@RestController
@RequestMapping("/echo")
public class EchoController {
  private static final String echoTemplate1 = "received %s!";
  private static final String echoTemplate2 = "%s speak to %s \'%s\'";
  private final AtomicLong counter = new AtomicLong();
  @RequestMapping(value="/getter/pattern1", method=RequestMethod.GET)
  public Echo getterPattern1(String content) {
    return new Echo(counter.incrementAndGet(), String.format(echoTemplate1, content));
  }
  @RequestMapping(value="/getter/pattern2", method=RequestMethod.GET)
  public Echo getterPattern2(@RequestParam(value="content", required=false) String alias) {
    return new Echo(counter.incrementAndGet(), String.format(echoTemplate1, alias));
  }
}

getterPattern1的上面增加了@RequestMapping注解,将指定的url和处理的方法进行映射,对应这个url的请求就由该方法来处理,method可以省略,省略后就是对应所有的Http Metho,gtterPatten1方法的参数默认就和url中的content参数进行映射。

再看getterPattern2,跟上面的方法效果一致,他们的区别就在于参数定义用了@RequestParam注解将url参数和方法参数进行了映射说明,@RequesteParam中value的值就是url中实际的参数,required说明该参数是否必须,如果是true,而实际上url中并没有带上该参数,那么会报异常,为防止异常可以增加defaultValue指定参数的默认值即可。我们会发现这里的方法参数是alias,这里当然是可以和url的参数名不同,只要RequestParam注解映射了他们的关系就没问题。

运行后,可以在浏览器中访问对应的url来看看结果,我这里是用curl来访问。

curl http://localhost:8080/echo/getter/pattern1?content=hello
curl http://localhost:8080/echo/getter/pattern2?content=hello

 上面两个url的访问得到的结果除了id会自增外,其他是一致的:

{"id":6,"content":"received hello!"} 

 2. Get请求,传递url路径参数,返回json。

在EchoController中增加一个响应方法。

  @RequestMapping(value="/getter/pattern3/{content}", method=RequestMethod.GET)
  public Echo getterPattern3(@PathVariable String content) {
    return new Echo(counter.incrementAndGet(), String.format(echoTemplate1, content));
  }

可以看到,在@RequestMapping的url定义中的末尾有“{content}”,表明这里是一个路径参数,在getterPattern3的参数content增加了@PathVariable注解,将方法参数与路径参数进行了映射。

运行后,访问url。

curl http://localhost:8080/echo/getter/pattern3/123456

结果:

{"id":8,"content":"received 123456!"}

3.Post请求,参数以Http body的途径提交Json数据。

先定义一个提交的Json对应的对象,这里把它定义为Message。

package com.example.demo;
public class Message {
  private String from;
  private String to;
  private String content;
  public Message() {}
  public String getFrom() {
    return this.from;
  }
  public String getTo() {
    return this.to;
  }
  public String getContent() {
    return this.content;
  }
  public void setFrom(String value) {
    this.from = value;
  }
  public void setTo(String value) {
    this.to = value;
  }
  public void setContent(String value) {
    this.content = value;
  }
}

在EchoController增加响应的方法,并完成映射。

  @RequestMapping(value="/setter/message1", method=RequestMethod.POST)
  public Echo setterMessage1(@RequestBody Message message) {
    return new Echo(counter.incrementAndGet(), String.format(echoTemplate2, message.getFrom(), message.getTo(), message.getContent()));
  }

在setterMessage1方法的参数中用@RequestBody将请求的Http Body和参数messge进行了映射。

运行后,使用curl向服务端提交json数据。提交的请求头部要带上"Content-Type:application/json",表明请求体Json。

curl -i -H "Content-Type:application/json" -d "{\"from\":\"Tom\",\"to\":\"Sandy\",\"content\":\"hello buddy\"}" http://localhost:8080/echo/setter/message1

结果:

{"id":9,"content":"Tom speak to Sandy 'hello buddy'"}

4.Post请求,参数以Http body的途径提交表单数据。

在EchoController增加响应的方法,并完成映射。

  @RequestMapping(value="/setter/message2", method=RequestMethod.POST)
  public Echo setterMessage2(@ModelAttribute Message message) {
    return new Echo(counter.incrementAndGet(), String.format(echoTemplate2, message.getFrom(), message.getTo(), message.getContent()));
  }

 在setterMessage2方法的参数中用@ModelAttribute将请求的Http Body中的表单数据和参数messge进行了映射。

运行后,使用curl向服务端提交表单数据。提交的请求头部要带上"Content-Type:application/x-www-form-urlencoded",表明请求体是表单数据,格式是"key1=value1&key2=value2&key3=value3"。

curl -i -H "Content-Type:application/x-www-form-urlencoded" -d "from=sandy&to=aissen&content=go to" http://localhost:8080/echo/setter/message2

 结果:

{"id":11,"content":"sandy speak to aissen 'go to'"}

总结

以上所述是小编给大家介绍的SpringBoot构建Restful service完成Get和Post请求,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# spring  # boot  # 构建restful  # service  # get  # post  # Springboot GET和POST请求参数获取方式小结  # springboot如何接收get和post请求参数  # SpringBoot常见get/post请求参数处理、参数注解校验及参数自定义注解校验详解  # SpringBoot RestTemplate GET POST请求的实例讲解  # springboot注解及GET、POST接口写法  # 表单  # 进行了  # 他们的  # 会报  # 要带  # 小编  # 服务端  # 增加了  # 是一个  # 他是  # 在此  # 不需要  # 其他的  # 会在  # 把它  # 这是一个  # 就没  # 用了  # 给大家  # 或者是 


相关文章: 如何通过WDCP绑定主域名及创建子域名站点?  制作电商网页,电商供应链怎么做?  制作网站的公司有哪些,做一个公司网站要多少钱?  如何在局域网内绑定自建网站域名?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  为什么Go需要go mod文件_Go go mod文件作用说明  如何用西部建站助手快速创建专业网站?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  如何访问已购建站主机并解决登录问题?  如何快速重置建站主机并恢复默认配置?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何在IIS中新建站点并解决端口绑定冲突?  如何在云虚拟主机上快速搭建个人网站?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  微信小程序 五星评分(包括半颗星评分)实例代码  大连 网站制作,大连天途有线官网?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  创业网站制作流程,创业网站可靠吗?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  如何在企业微信快速生成手机电脑官网?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何用美橙互联一键搭建多站合一网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  韩国服务器如何优化跨境访问实现高效连接?  如何高效利用200m空间完成建站?  网站制作的步骤包括,正确网址格式怎么写?  Bpmn 2.0的XML文件怎么画流程图  建站之星ASP如何实现CMS高效搭建与安全管理?  装修招标网站设计制作流程,装修招标流程?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  c# await 一个已经完成的Task会发生什么  网站好制作吗知乎,网站开发好学吗?有什么技巧?  常州企业建站如何选择最佳模板?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何选择域名并搭建高效网站?  建站之星展会模版如何一键下载生成?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何快速启动建站代理加盟业务?  如何高效完成自助建站业务培训?  ,柠檬视频怎样兑换vip?  南京网站制作费用,南京远驱官方网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站为何优先选择香港服务器?  Swift中switch语句区间和元组模式匹配  如何快速查询网址的建站时间与历史轨迹?  如何用花生壳三步快速搭建专属网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。