@RestController
@RequestMapping("/member")
public class WebController {
@RequestMapping(value = "/firstname/{firstName}", method = {RequestMethod.GET})
@ResponseBody
public String queryFirstName(@PathVariable String firstName) {
return firstName;
}
}
然後可以用以下的網址來下請求
kiki是這個Web App的Context
使用PathVariable標註就可以取得URL的參數了,之後看要怎麼做後續的處理,這裡將queryFirstName這個method用ResponseBody標注起來,這樣此method回傳的東西就會變成此Service回應的Body,所以此Service就會回應Bloom
POST請求:
假設現在有一個以下的JSON進來:
{
"firstName":"Frank",
"lastName":"Vincent"
}
然後我需要準備一個對應的物件類別來封裝這個JSON:package com.example.demo;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Customer {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("firstName")
@Expose
private String firstName;
@SerializedName("lastName")
@Expose
private String lastName;
/**
* No args constructor for use in serialization
*
*/
public Customer() {
}
/**
*
* @param id
* @param lastName
* @param firstName
*/
public Customer(Integer id, String firstName, String lastName) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public Customer(String firstName, String lastName) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Customer2{" + "id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + '}';
}
}
那我就可以用以下程式碼去處理
@RestController
@RequestMapping("/member")
public class WebController {
@RequestMapping(value = "/person", method = {RequestMethod.POST}, consumes = "application/json;charset=UTF-8")
@ResponseBody
public Customer addPerson(@RequestBody String requestBody) {
Gson gson = new GsonBuilder().disableHtmlEscaping().setFieldNamingPolicy(FieldNamingPolicy.IDENTITY).create();//創造Gson物件
Customer u = gson.fromJson(requestBody, Customer.class);
return new Customer(u.getFirstName(), u.getLastName());
}
}
addPerson就會回傳以下json:{
"id": null,
"firstName": "Frank",
"lastName": "Vincent"
}
補充:將RestController放到別的套件就不能動了?
請參考這篇:https://stackoverflow.com/a/33040518/9512195
需要在main的那隻主程式加一個ComponentScan標註,告知還有誰是元件。
參考:
Spring Boot Reference Guide
Spring Boot Docs 2.0.3.RELEASE API
沒有留言:
張貼留言