SpringBoot构建RESTful service完成Get和Post(2)

可以看到,在@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'"}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/663a38a346955cfd85fcfc3f719c8df9.html