当前位置: 首页 > 知识库问答 >
问题:

无法测试使用Spring Boot开发的REST API

楚涵润
2023-03-14

我正在尝试测试用Spring Boot创建的REST API。以下是该方法的签名:

@RequestMapping(consumes = "multipart/form-data", method = RequestMethod.POST)
    public Response<String> upload(@RequestBody CsvUploadModel form) {

以下是模型对象的详细信息:

private char separator;
    private char quoteCharacter;
    private String metricName;
    private String groupName;
    private MultipartFile file;
//getters and setters
/**
     * Allow file uploads
     *
     * @return
     */
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultiPartConfigFactory factory = new MultiPartConfigFactory();
        factory.setMaxFileSize("500MB");
        factory.setMaxRequestSize("500MB");
        return factory.createMultipartConfig();
    }

    /**
     * Get the multipart resolver
     *
     * @return
     */
    @Bean
    public MultipartResolver multipartResolver() {
        return new CommonsMultipartResolver();
    }
POST /dev/wizard/upload HTTP/1.1
Host: localhost:10022
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="metricName"

test
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="separator"

,
----WebKitFormBoundaryE19zNvXGzXaLvS5C

我漏了什么明显的东西吗?

谢谢

共有1个答案

艾阳羽
2023-03-14
@RequestBody CsvUploadModel form

这需要提供HttpMessageConverter,该HttpMessageConverter可以读取Multipart/Form-Data类型的请求负载。不幸的是Spring目前没有提供这样的转换器。有一个FormHttpMessageConverter,但它只能读取简单的表单数据(Application/x-www-form-urlencoded)。

为了使方法正常工作,您应该删除@requestbody注释,并为文件添加一个参数:

upload(CsvUploadModel form, @RequestParameter(required=false) MultipartFile file)

绑定表单数据不需要@requestbody。然后必须手动设置文件:

form.setFile(file);

也许有一个支持读取multipart/form-data的第三方转换器。我既不使用也不知道。

 类似资料:
  • 我正在尝试根据下面的代码提出帖子请求: 此请求不需要身份验证,也不需要登录和密码。在邮递员那里,我可以成功地提出请求,但当我尝试执行上述代码时,我得到了: 401未经授权 我在邮递员那里模拟了错误,它给了我下面的信息: 当我在Postman中将身份验证方法更改为“No Auth”时,请求运行良好。 我想我必须在代码中设置这个选项“No Auth”,但我不知道如何设置。 我这样做: 但错误仍在继续。

  • 我想测试一个示例Twirp RPC服务。示例服务来自Twirp官方网站。 PROTOBUF定义如下: 服务器实现: 我尝试了这里建议的解决方案,但在ClientConn与HTTPClient中存在一些混淆。到目前为止,我有这个 有没有办法把一个转换成另一个,或者有没有办法测试Twirp RPC?

  • 我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了

  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 俩面试官提问 自我介绍 简单介绍一下项目 说说表结构具体怎么优化的 怎么进行模块测试的 谈谈对测试的理解 是否了解一些常用的测试工具和测试框架 这边做自动化测试是python能接受转语音吗 反问 部门做什么的,以及去了负责什么#软件开发2023笔面经#

  • 我的一些 .Net Framework 4.5 和 4.6 和 4.7 项目没有被测试资源管理器发现它们的测试,我一直遇到这个反复出现的问题。“测试”日志输出显示: 这就是我所有的信息。 我已经尝试了不同版本的和适配器等的几乎所有组合。只是想不通这个。我已经完成了测试扩展缓存清除。