先看接口:
@POST
@Path("/deleteById")
//@Consumes(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public ResultModel deleteByPrimaryKey(@FormParam("id") Integer personId) {
int count = personService.deleteByPrimaryKey(personId);
return ResultModel.ok(count);
}
這種接口限制了MediaType為APPLICATION_FORM_URLENCODED,是以測試http請求如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SN3gDOxIzN3UTN4kTO0EGZyYzX2EDN1QTMyIzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
注意2點:
(1)Content-Type一定要是application/x-www-form-urlencoded,這和接口上面的注解APPLICATION_FORM_URLENCODED是對應的。
否則會報錯,比如http請求中的Content-Type為application/json,這顯然和接口上邀請的媒體類型比對不上,就會報如下錯誤:
(2)由于接口上的接收的參數使用了@FormPrame注解,是以要求發送http請求的時候參數的傳遞一定是form表單的形式,即id=2這樣的方式,否則會報如下錯誤:
[總結]:如果發送http請求的時候body中的參數是form表單的形式,比如id=2這樣方式,要求被請求的接口的MediaType要使用APPLICATION_FORM_URLENCODED,并且接口的參數上要使用@FormParam("id")注解,注解中的"id"要和發送http請求時傳遞的參數名稱保持一緻。
如果發送http請求時參數形式為"id=2&name=張三"的話,背景接口的參數就應該與之對應如下:
@POST
@Path("/deleteById")
//@Consumes(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public ResultModel deleteByPrimaryKey(@FormParam("id") Integer personId, @FormParam("name") String name) {
int count = personService.deleteByPrimaryKey(personId);
return ResultModel.ok(count);
}
如果希望http請求的body部分是json格式,比如:
那麼,對應的接口就應該是如下形式:
@POST
@Path("/deleteById")
@Consumes(MediaType.APPLICATION_JSON)
//@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public ResultModel deleteByPrimaryKey(Person person) {
int count = personService.deleteByPrimaryKey(person.getPersonId());
return ResultModel.ok(count);
}
注意:發送http請求的時候,參數"personId"一定要和接口中的Person中的屬性personId在名稱上保持一緻。
Person類如下:
import java.util.Date;
public class Person {
private Integer personId;
private String personName;
private Integer gender;
private String personAddr;
private Date birthday;
public Integer getPersonId() {
return personId;
}
public void setPersonId(Integer personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName == null ? null : personName.trim();
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public String getPersonAddr() {
return personAddr;
}
public void setPersonAddr(String personAddr) {
this.personAddr = personAddr == null ? null : personAddr.trim();
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}