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

 

如果覺得本文對您有幫助,不妨掃描下方微信二維碼打賞點,您的鼓勵是我前進最大的動力:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM