URL路由和参数处理

目录

 

URL路由和参数处理

URL路由

RESTful URL

@RestController 注解

@RquestMapping 注解

参数处理

@PathVariable 注解

@RequestParam 注解


URL路由和参数处理

URL路由

RESTful URL

理解RESTful架构 - 阮一峰的网络日志

前后端分离的设计思想

@RestController 注解

帮助Spring Boot中涉及到web中的URl可以执行路由的规则

@RquestMapping 注解

主要用在方法或者类上,

请求映射,根据传入测参数("/say")映射到hello()方法

在方法上使用

这种方式所有的请求都支持

RquestMapping 注解,在方法上使用

指定请求类型

可以使用api测试工具验证:下载地址:https://www.eolinker.com/pc/

RquestMapping 注解,在类上使用

以上源码

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by limi on 2017/8/13.
 */
@Controller
//@RestController
@RequestMapping("/api")
public class HelloController {

//    @RequestMapping(value = "/say", method = RequestMethod.POST)
    @PostMapping("/say")
    public String hello() {
        return "Hello Spring Boot";
    }

    @GetMapping("/books")
    @ResponseBody
    public Object getAll() {

        Map<String, Object> map = new HashMap<>();
        map.put("name", "hello");
        map.put("age", 18);

        return map;
    }
}

参数处理

获取URL传过来的参数

@PathVariable 注解

控制台打印

传入多个参数,每个参数前面都要加上@PathVariable注解

控制台打印

参数的位置可以放在前面

参数后面可以加上正则表达式

以上源码

  @RestController
@RequestMapping("/api/v1")
public class HelloController {
  /**
     * 正则表达式:{参数名:正则表达式}
     * @param id
     * @param username
     * @return
     */
 @GetMapping("/{id}/books/{username:[a-z_]+}")
    public Object getOne(@PathVariable long id,@PathVariable String username) {

        System.out.println(" --- id: "  + id + " username: " + username);

        Map<String, Object> book = new HashMap<>();
        book.put("name", "互联网世界观");
        book.put("isbn", "9877234623432");
        book.put("author", "李善友");
        book.put("username", username);
        return book;
    }
}

@RequestParam 注解

获取POST表单的参数

以上源码

    @PostMapping("/books")
    public Object post(@RequestParam("name") String name,
                       @RequestParam("author") String author,
                       @RequestParam("isbn") String isbn) {
        Map<String, Object> book = new HashMap<String, Object>();
        book.put("name", name);
        book.put("author", author);
        book.put("isbn", isbn);
        return book;
    }

每次传1页,一页传10个

以上源码

    @GetMapping("/books")
//    @ResponseBody
    public Object getAll(@RequestParam("page") int page, @RequestParam(value = "size",defaultValue = "10") int size) {

        Map<String, Object> book = new HashMap<>();
        book.put("name", "互联网世界观");
        book.put("isbn", "9877234623432");
        book.put("author", "李善友");
        Map<String, Object> book2 = new HashMap<>();
        book2.put("name", "程序员的思维修炼");
        book2.put("isbn", "12312312");
        book2.put("author", "auhi");

        List<Map> contents = new ArrayList<>();
        contents.add(book);
        contents.add(book2);

        Map<String, Object> pagemap = new HashMap<>();
        pagemap.put("page", page);
        pagemap.put("size", size);
        pagemap.put("content", contents);

        return pagemap;
    }
发布了153 篇原创文章 · 获赞 6 · 访问量 2371

猜你喜欢

转载自blog.csdn.net/yangshengwei230612/article/details/103710580