先看接口:

    @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的接口测试方法的更多相关文章

  1. API(Application Programming Interface,应用程序编程接口)

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码 ...

  2. SpringMvc Json LocalDateTime 互转,form urlencoded @ModelAttribute 转换

    JDK8 的LocalDate 系列日期API ,比Date 或者 Calendar 都好用很多,但是在SpringMvc 自动装配会有点小问题 会导致抛出类似异常 default message [ ...

  3. c# Application.run和form.show区别

    Application.run(form):在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见. form.show() :使指定窗体可见: 参照:https://blog.csdn.net/ ...

  4. Application.Run()和Form.Show()以及Form.ShowDialog()

    ShowDialog()弹出模式化的窗体 Show()弹出非模式化的窗体 模式窗体,在关闭或隐藏前无法切换到主窗体. 非模式窗体,变换焦点使不必关闭窗体 总结:显示重要的信息,还是用模式窗体,如删除文 ...

  5. Android 网络请求框架Retrofit

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  6. Python开发【第十六篇】:AJAX全套

    概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...

  7. WebForm在JS中从Dropdownlist添加数据,在C#段读取

    (1)页面设置和JS代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Def ...

  8. js控制TR的显示影藏

    在很多现实的场景中,有的文本框我们希望在选择“是”的按钮之后才出现,这就需要js控制TR的隐藏和显示,(div的影藏显示类似) 以下是一段选择是的按钮就显示身高和体重的文本框的代码.注意:ready方 ...

  9. 平衡树 - 红黑树(JQuery+Js+Canvas版本的,帮助大家理解)

    红黑树 1.红黑树介绍 年写的一篇论文中获得的.它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目. 2 ...

随机推荐

  1. Vue.js——60分钟快速入门 开发· webpack 中文文档

    转载于:http://www.cnblogs.com/keepfool/p/5619070.html http://www.css88.com/doc/webpack2/guides/get-star ...

  2. [转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法

      nf_conntrack: table full, dropping packet  连接跟踪表已满,开始丢包 的解决办法 中午业务说机器不能登录,我通过USM管理界面登录单板的时候发现机器没有僵 ...

  3. Android程序员必备精品资源

    平时写程序中不断收集到的一些比较常用的东西,分享给大家. 实用工具集锦 Android Lifecycle https://github.com/xxv/android-lifecycle TinyP ...

  4. Entity Framework 无法加载指定的元数据资源。

    ADO.NET Entity Framework发布以来,本人也一直在用,深感好用,忍不住地要感谢微软啊!由于项目结构创建完成后,没怎么改动过,所以一直没出题过问题,可最近由于改动了下命名空间,问题来 ...

  5. Linux下安装LAMP(Apache+PHP+MySql)和禅道

    1.更新yum源: yum update -y 2.安装Apache+PHP+MySql yum install httpd mysql-devel mysql-server mysql-php ph ...

  6. js 对文件操作

    下面是对此知识的系统介绍(转自互联网): Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文 ...

  7. block(五)用法

    最近又从网上找了点block用法的博客,供大家参考. Block简介: Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参 ...

  8. Swift 类型检查与类型转换

    前言 在 Swift 语言中一般使用 is 关键字实现类型检查,使用 as 关键字实现类型转换,除此之外还可以通过构造器和方法来实现类型转换. 1.类型检查 1.1 使用 is 检查 类型检查操作符 ...

  9. Linux内核同步:RCU

    linux内核 RCU机制详解 简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用.RCU主要针对的数据对象是链表,目的是提高遍历读取数据的 ...

  10. 一个酷绚的linux 桌面程序 GLX-DOCK (cario-dock)

    记录一个酷绚的linux  桌面程序  GLX-DOCK (cario-dock),支持多种风格的桌面主题. http://glx-dock.org/ 优势: 多个workspaces 方便自由切换 ...