先看接口:
@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請求如下:
注意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; } }
如果覺得本文對您有幫助,不妨掃描下方微信二維碼打賞點,您的鼓勵是我前進最大的動力: