springboot发布http接口

本例子是再springboot-base 基础上进行

新建一个包用来存放接口类文件

1569397133707.png

再新建一个HelloWorld类文件敲上如下代码:

1569399733325.png

1569399861010.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.example.springbootbase.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.*;
/**
* @ClassName HelloWorld
* @Author wuzhiyong
* @Date 2019/9/25 15:39
* @Version 1.0
**/
@Controller
public class HelloWorld {

List<String> list_str = Arrays.asList("java","php","go","c");

Map map_str = new HashMap<String,String>();

@GetMapping("/hello")
public String hello(){
return "hello world";
}
@ResponseBody
@GetMapping("list")
public Object getList() {
return list_str;
}
@ResponseBody
@GetMapping("list/{index}")
public Object getListByIndex(@PathVariable("index") int index){
return list_str.get(index);
}
@GetMapping("list01/{index}")
public Object getListByIndex01(@PathVariable("index") int index){
return list_str.get(index);
}
@ResponseBody
@GetMapping("map/{key}")
public Object getValueByKeyOnMap(@PathVariable ("key") String key){
return map_str.get(key);
}
@ResponseBody
@PostMapping("map/{key}/{value}")
public Object putMapBykv( @PathVariable("key") String key, @PathVariable("value") String value) {
map_str.put(key,value);
return "success";
}
}

启动项目打开浏览器(或用接口测试工具 例:postman)测试

1569403680828.png

浏览器请求 /hello 接口404错误 是因为 该接口没有加 @ResponseBody 注解。系统会去找页面。由于页面没有配置,所以这里出现404

1569403744387.png

请求list 接口 数据正常返回了

1569403782104.png

这个是用 postman 测试list接口 也正常返回了

1569403842099.png

测试 /list/0 接口返回了 list 的0位数据,正常得到了 java

1569403925422.png

访问/list01/0 接口。虽然接口内容相同。 出现400 是因为接口没有加上 @ResponseBody 注解。

1569404022936.png

出现了405 是因为 请求方法不对。后台这个接口请求得 用post 方式请求(浏览器默认是GET方式请求)。

下面用工具 用post方式 请求就正常了。

1569404512476.png

1569404548317.png

这里 再通过 /map/{key}接口获取 刚刚 存入map 里的数据。正常返回!

听说前后台都是用JSON数据进行交互的,这里我要返回一个json字符串怎么办。

我们先加上这样一个方法

1
2
3
4
5
6
7
8
9
@ResponseBody
@GetMapping("getjson")
public Object getjson( ) {
map_str.put("我要学习","java");
map_str.put("我要认真学习","数据库");
map_str.put("我要好好学习","spring");
map_str.put("所以我今晚打算","去搓麻将");
return map_str;
}

然后重启项目

然后浏览器访问:

1569406143618.png

用postman访问:

1569406193340.png

postman 自动将返回的数据格式化了。

ps:由于map 是无序的 所以这里得到的结果是无序的。

使用工具来测试接口。可以更直观的看到请求方式、参数列表、请求状态、响应时间、数据大小。并且填写好备注后,可以直接生成接口文档。