MediaType是application/x-www-form-urlencoded的接口测试方法

博观而约取,厚积而薄发。这篇文章主要讲述MediaType是application/x-www-form-urlencoded的接口测试方法相关的知识,希望能为你提供帮助。
先看接口:

@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请求如下:
MediaType是application/x-www-form-urlencoded的接口测试方法

文章图片

注意2点:
(1)Content-Type一定要是application/x-www-form-urlencoded,这和接口上面的注解APPLICATION_FORM_URLENCODED是对应的。
否则会报错,比如http请求中的Content-Type为application/json,这显然和接口上邀请的媒体类型匹配不上,就会报如下错误:
MediaType是application/x-www-form-urlencoded的接口测试方法

文章图片

(2)由于接口上的接收的参数使用了@FormPrame注解,所以要求发送http请求的时候参数的传递一定是form表单的形式,即id=2这样的方式,否则会报如下错误:
MediaType是application/x-www-form-urlencoded的接口测试方法

文章图片

【MediaType是application/x-www-form-urlencoded的接口测试方法】 
[总结]:如果发送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格式,比如:
MediaType是application/x-www-form-urlencoded的接口测试方法

文章图片

那么,对应的接口就应该是如下形式:
@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; } }

 
如果觉得本文对您有帮助,不妨扫描下方微信二维码打赏点,您的鼓励是我前进最大的动力:
MediaType是application/x-www-form-urlencoded的接口测试方法

文章图片

 

    推荐阅读