基本說明:java
類使用了@RestController
註解web
@RequestMapping("test1") public Object test1(int param1,long param2){ return String.format("param1=%s,param2=%s", param1,param2); }
訪問http://127.0.0.1:8080/test1?param1=666¶m2=333
時輸出:spring
param1=666,param2=333
注意項:json
使用基本類型進行數據綁定的時候,必須對參數進行賦值,否則會報錯。數組
@RequestMapping("test2") public Object test2(Integer param1,Long param2){ return String.format("param1=%s,param2=%s", param1,param2); }
訪問http://127.0.0.1:8080/test1?param1=666
時輸出:app
param1=666,param2=null
@RequestMapping("test3") public Object test3(String[] language){ return String.format("language=%s", Arrays.toString(language)); }
訪問http://127.0.0.1:8080/test3?language=java&language=kotlin&language=scala
時輸出:maven
language=[java, kotlin, scala]
示例對象:ide
public class Book { private String name; private BookDetail bookDetail; public String getName() { return name; } public void setName(String name) { this.name = name; } public BookDetail getBookDetail() { return bookDetail; } public void setBookDetail(BookDetail bookDetail) { this.bookDetail = bookDetail; } @Override public String toString() { return "Book [name=" + name + ", bookDetail=" + bookDetail + "]"; } }
@RequestMapping("test4") public Object test4(Book book){ return book; }
訪問http://127.0.0.1:8080/test4?name=Hello&bookDetail.ISBN=7-111-14305-1/TP
時輸出:this
{"name":"Hello","bookDetail":{"isbn":"7-111-14305-1/TP"}}
示例對象:scala
public class Student { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student [name=" + name + "]"; } }
@InitBinder("book") public void initBookPrefix(WebDataBinder webDataBinder){ webDataBinder.setFieldDefaultPrefix("book."); } @InitBinder("student") public void initStudentPrefix(WebDataBinder webDataBinder){ webDataBinder.setFieldDefaultPrefix("student."); } @RequestMapping("test5") public Object test5(Book book,Student student){ return book + " <br> " + student; }
訪問http://127.0.0.1:8080/test5?book.name=Hello&bookDetail.ISBN=7-111-14305-1/TP&student.name=World
時輸出:
Book [name=Hello, bookDetail=BookDetail [ISBN=7-111-14305-1/TP]] Student [name=World]
@RequestMapping("test6") public Object test6(@RequestParam Map<String, String> params){ return params; }
訪問http://127.0.0.1:8080/test6?name=66&age=7&status=0
時輸出:
{"name":"66","age":"7","status":"0"}
在多參數搜索的時候,用Map做爲入參,能夠方便增減搜索參數。
需增長Jackson的依賴,來支持JSON格式的參數,maven座標以下:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency>
@RequestMapping("test7") public Object test7(@RequestBody Book book){ return book; }
訪問時,請求頭添加:Content-Type: application/json
,請求體以下:
{ "name":"Hello", "bookDetail":{ "isbn":"666" } }
輸出:
{ "name": "Hello", "bookDetail": { "isbn": "666" } }
網上不少例子都是使用spring-oxm
依賴,再對實體類增長註解來增長對XML的支持,這裏的示例使用Jackson依賴,來支持XML格式的參數,而且不須要對實體類增長註解,maven座標以下:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.8.7</version> </dependency>
@RequestMapping("test8") public Object test8(@RequestBody Book book){ return book; }
訪問時,請求頭添加:Content-Type: application/xml
,請求體以下:
<root> <name>Hello</name> <bookDetail> <isbn>666</isbn> </bookDetail> </root>
輸出:
{ "name": "Hello", "bookDetail": { "isbn": "666" } }