1. 程式人生 > >SpringBoot入門筆記02——簡單http介面開發實戰

SpringBoot入門筆記02——簡單http介面開發實戰

開始寫程式碼

一、建立一個簡單的介面,返回json

1、建立相應的包和類 一般我們會分包進行建立,我這裡簡單建立了一個controller 的包,裡面寫相關的介面controller 然後再test包下我建立了一個Application 類,這個名詞可以自己起。這個類是執行springboot的入口,需要進行配置下。 mark 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=張三 來進行呼叫這個介面。 mark

二、 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=truefalse

                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