MediaType是application/x-www-form-urlencoded的介面測試方法

來源:互聯網
上載者:User

標籤:表單   ltm   mode   限制   form表單   bsp   img   url   content   

先看介面:

    @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的介面測試方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.