SpringBoot入門筆記02——簡單http介面開發實戰
開始寫程式碼
一、建立一個簡單的介面,返回json
1、建立相應的包和類 一般我們會分包進行建立,我這裡簡單建立了一個controller 的包,裡面寫相關的介面controller 然後再test包下我建立了一個Application 類,這個名詞可以自己起。這個類是執行springboot的入口,需要進行配置下。 Application 程式碼如下:
2、Application 類程式碼講解
package com.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public classApplication {
public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
@SpringBootApplication 註解:
@SpringBootApplication註解一般放在專案的一個啟動類上,用來把啟動類注入到容器中,用來定義容器掃描的範圍,用來載入classpath環境中一些bean @SpringBootApplication = @
[email protected][email protected] springboot 把這幾個註解整合了。只需要寫一個就可以
然後在main方法中新增SpringApplication.run(Application.class,args); 來啟動應用程式
3、TestController類講解
package com.test.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public classTestController {
//測試用的集合
Map<String,Object> params=new HashMap<>();
/**
* 第一個介面測試
* @param name
* @return
*/
@RequestMapping("/test")
public Object getTest(String name){
params.clear();
params.put("name",name);
return params;
}
}
- 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
這裡用到了兩個註解,@RestController、 @RequestMapping @RestController and @RequestMapping是springMVC的註解,不是springboot特有的 (1)@RestController @RestController 是spring4 新加入的註解,相當於@Controller [email protected] 兩個註解的功能和 @Controller的作用表示該類是一個控制器,可以接受使用者的輸入並呼叫模型和檢視去完成使用者的需求。控制器本身不輸出也不處理任何東西。 我們寫的介面也就是控制器裡面的方法。 @ResponseBody 表示 請求以json對映的方式返回。 所以@RestController 註解的類就可以 接受請求——返回json 2、@RequestMapping 這個註解可以載入類和方法上,我理解是表示資源的對映吧,為web請求指明路徑。可以定義不同的對映規則 註解在方法上表示當前方法時一個web請求的處理方法,註解在類上,應該是常用的請求地址或路由啥的
上面方法中再@RequestMapping(“/test”) 方法中的”/test” 就是外部訪問的介面地址,暫時我們沒有指定請求方法 這樣外部就能通過 http://localhost:8080/test?name=張三 來進行呼叫這個介面。
二、 get、post請求實戰
(1) get請求實戰
package com.test.controller;
import com.test.domain.User;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@RestController
public classGetController {
Map<String, Object> params = new HashMap<>();
/**
* 從路徑中取值
*
* @param cityID
* @param userID
* @return
*/
@RequestMapping(path = "/{city_id}/{user_id}")
public Object getUserID(@PathVariable("city_id") String cityID,
@PathVariable("user_id") String userID) {
params.clear();
params.put("cityID", cityID);
params.put("userID", userID);
return params;
}
/**
* 測試@GetMapping註解,以get方式請求介面
* @param id
* @param name
* @return
*/
@GetMapping(value = "/v1/getUser")
public Object getMappingTest(String id, String name) {
params.clear();
params.put("name", name);
params.put("id", id);
return params;
}
/**
* 測試,設定引數預設值,別名、以及是否必傳引數
* @param id
* @param username
* @return
*/
@RequestMapping("/v1/getUser1")
public Object getMyappingTest1(@RequestParam(defaultValue = "888",name = "uid") String id, @RequestParam(required = true) String username){
params.clear();
params.put("username", username);
params.put("id", id);
return params;
}
/**
* 功能描述:bean物件傳參
* 注意:1、注意需要指定http頭為 content-type為application/json
* 2、使用body傳輸資料
* @param user
* @return
*/
@RequestMapping("/v1/save_user")
public Object saveUser(@RequestBody User user){
params.clear();
params.put("user", user);
return params;
}
/**
* 功能描述:測試獲取http頭資訊
* @param accessToken
* @param id
* @return
*/
@GetMapping("/v1/get_header")
public Object getHeader(@RequestHeader("access_token") String accessToken, String id){
params.clear();
params.put("access_token", accessToken);
params.put("id", id);
return params;
}
/**
* 以HttpServletRequest獲取所有請求資料
* @param request
* @return
*/
@GetMapping("/v1/test_request")
public Object testRequest(HttpServletRequest request){
params.clear();
String id = request.getParameter("id");
params.put("id",id);
return params;
}
@PostMapping("/v1/login")
public Object login(@RequestParam(required = true) String userName, @RequestParam(required = true)String passWrod){
params.clear();
params.put("name",userName);
params.put("pwd",passWrod);
return params;
}
@PutMapping("/v1/put")
public Object put(String id){
params.clear();
params.put("id", id);
return params;
}
@DeleteMapping("/v1/del")
public Object del(String id){
params.clear();
params.put("id", id);
return params;
}
}
- 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
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
註解簡介: 1、單一引數@RequestMapping(path = "/{id}", method = RequestMethod.GET)
1) public String getUser(@PathVariable String id ) {}
2)@RequestMapping(path = "/{depid}/{userid}", method = RequestMethod.GET) 可以同時指定多個提交方法
getUser(@PathVariable("depid") String departmentID,@PathVariable("userid") String userid)
3)get、post、put、delete四種註解的封裝
@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@PutMapping = @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)
4)@RequestParam(value = "name", required = true)
可以設定預設值,可以設定別名name="",可以設定是否必傳 requeid=true或false
4)@RequestBody 請求體對映實體類,以json對映javaBean
需要指定http頭為 content-type為application/json charset=utf-8
5)@RequestHeader 請求頭,比如鑑權,可以獲取請求頭
@RequestHeader("access_token") String accessToken
6)HttpServletRequest request自動注入獲取引數,可以拿到任何請求資料
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24