进行完入门之后,本章再学习这个RESTful Web
第一步
直接在上一届新建的spring web工程里,开始操作。
新建一个类文件,定义两个变量id和content,并生成get方法。
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
第二步:创建他的控制器GreetingController
package com.example.restservice;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
这里首先有个RestController
这个其实学过MVC的都知道会有Controller,两者之间有什么区别?看一下官方文档。
可以看到,它是 @Controller and @ResponseBody的合体,在单独使用 @Controller时,其返回为“test”时,实际上是test.jsp这个页面,因为配置了视图解析器,但是对于RestController,其返回值就只是简单的字符串test。
@ResponseBody则是一个键值对 对应的用来传变量 的东西。
@GetMapping("/greeting")则是把页面给映射到
还有就是
返回的Greeting对象必须转换为JSON。借助Spring的HTTP消息转换器支持,您无需手动进行此转换。由于Jackson 2在类路径中,MappingJackson2HttpMessageConverter因此将自动选择Spring的将Greeting实例转换为JSON。
最终我们运行启动
访问相应界面
由于写了
@RequestParam(value = “name”, defaultValue = “World”)
他可以让我们以get的形式去传递参数?name=User
结果如下
这时候我看到一个别的教程,里边使用的是/greeting2/{id}/{status},含有两个变量的这种,他是根据url的形式风格来判断是不是RESTFUL。
在这里还用到一个变量注解@PathVariable,从直接释义可以看出,路径变量,也是我们写到GetMapping的变量。
@GetMapping(value = "/greeting2/{id}/{status}")
public Object greeting2(@PathVariable("id") long id,
@PathVariable("status") Integer status){
return new Greeting(id, Integer.toString(status));
}
启动服务后,访问
可以看到也达到了效果。
到底结束,休息一下吧,顺便问一句,你在十五分钟内完成这些了吗