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;
    }
}
时间: 2024-11-07 13:50:34

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

c#学习笔记之WPF Application和Windows Form Applications

一.WPF Application WPF使用XAML(extensible application markup language)可扩展应用程序标记语言,来进行页面的操纵,非常简便易懂. 下面一段代码,就是使用xaml语言对页面进行布局 <Window x:Class="WpfApplication1.Window1"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

[C#] 使用Application.AddMessageFilter当做Form的热键

Application.AddMessageFilter可以帮你监视所有系统发送到Form的讯息  我们利用它来过滤讯息  便可以做出我们需要的热键 这是Application.AddMessageFilter的呼叫方式  必须传递一个IMessageFilter的对象当做参数 public static void AddMessageFilter( IMessageFilter value ) 我们这边做一个继承IMessageFilter界面的HotKey类别 class HotKey :

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

ShowDialog()弹出模式化的窗体 Show()弹出非模式化的窗体 模式窗体,在关闭或隐藏前无法切换到主窗体. 非模式窗体,变换焦点使不必关闭窗体 总结:显示重要的信息,还是用模式窗体,如删除文件,可以确保用户正真想要删除的是该文件 非模式的,窗体访问的顺序没有办法得知,比较适合显示程序的一些相关信息. 用show的话可能会一闪而过

ElementUI Form 调用后端接口校验

使用ElementUI Form 校验时,如果需要调用后端接口进行校验的话,那么使用自定义验证规则 var validateCode = (rule, value, callback) => { if (value === '') { callback(new Error('请输入岗位编码')); } else if (value.length > 50) { callback(new Error('岗位编码不超过50个字符')); } else if (!/^[a-zA-Z][a-zA-Z0

form表单调接口校验 比如后台验证用户名是否存在

<FormItem {...formItemLayout} label={'显示名'}> {getFieldDecorator('displayName', { initialValue: displayName, validateTrigger: 'onBlur', rules: [ { transform: val => val && val.trim() }, { required: true, message: '请输入显示名' }, { max: 20, mes

js控制TR的显示影藏

在很多现实的场景中,有的文本框我们希望在选择“是”的按钮之后才出现,这就需要js控制TR的隐藏和显示,(div的影藏显示类似) 以下是一段选择是的按钮就显示身高和体重的文本框的代码.注意:ready方法必须要引用jquery的库. 1.html Code <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <

MVC--数据增删改查(Razro语法)

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Mvc2.Models; namespace Mvc2.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } //添加

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

Python开发[第十六篇]:AJAX全套 概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要重新加载全局数据 2.AJAX AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步的JavaScript:使用 [JavaScript语言] 以

Jquery跨域请求和.Net后台跨域请求

一年一度抢火车票的季节又到了,作为一个程序员,在研究12306提供的接口时遇到的一些跨域的问题.以查询余票接口为例.第一种方法:  $.ajax({                url: 'https://kyfw.12306.cn/otn/leftTicket/queryT?leftTicketDTO.train_date=2015-02-05&leftTicketDTO.from_station=SZH&leftTicketDTO.to_station=SHH&purpose