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

Posted 十光年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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请求如下:

注意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;
    }
}

 

如果觉得本文对您有帮助,不妨扫描下方微信二维码打赏点,您的鼓励是我前进最大的动力:

 

以上是关于MediaType是application/x-www-form-urlencoded的接口测试方法的主要内容,如果未能解决你的问题,请参考以下文章

发布数据 使用 'content-type': 'application/x-www-form-urlencoded' 和 'key': 'key' 发布数据

原生JS封装Ajax(原理)

如何获取访问令牌

正确使用 Apache Tika MediaType

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

卷曲设置 Content-Type 不正确