zoukankan      html  css  js  c++  java
  • 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;
        }
    }

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

  • 相关阅读:
    Java Review (十七、面向对象----枚举类)
    Java Review (十六、面向对象----Lambda 表达式)
    Java Review (十五、面向对象----内部类)
    Java Review (十四、面向对象----接口)
    Java Review (十三、面向对象----抽象类)
    Java Review (十二、面向对象----final 修饰符)
    Java Review (十一、面向对象----多态)
    Java Review (十、面向对象----继承)
    Java Review (九、面向对象----封装)
    Java Review (八、面向对象----成员变量和局部变量)
  • 原文地址:https://www.cnblogs.com/jun1019/p/6944120.html
Copyright © 2011-2022 走看看