【发布时间】:2017-12-13 10:09:01
【问题描述】:
我正在尝试使用 swagger 变形器构建服务。 但是当我试图将复杂的对象发布到我的招摇控制器时,我遇到了一些问题。请查看下面提供的我的配置。
我的 swagger.yaml:
swagger: "2.0"
info:
version: 1.0.0
title: Dummy Controller
basePath: /v1
tags:
- name: Dummy Controller
description: Dummy controller
schemes:
- http
paths:
/someService/create:
post:
tags:
- someService
summary: Test
description: ""
operationId: createPoint
consumes:
- application/json
- application/xml
produces:
- application/xml
- application/json
parameters:
- in: body
name: body
description: Created object
required: false
schema:
$ref: '#/definitions/Point'
responses:
default:
description: successful operation
definitions:
Point:
title: Point
description: ''
type: object
properties:
latitude:
description: ''
type: string
longitude:
description: ''
type: string
required:
- latitude
- longitude
ApiResponse:
properties:
code:
type: integer
format: int32
type:
type: string
message:
type: string
xml:
name: "##default"
我的控制器:
public class SomeServiceController {
public ResponseContext createPoint(RequestContext request, Point point){
System.out.println(point);
return new ResponseContext()
.status(Status.OK);
}
}
当我试图发这样的帖子时:
POST http://localhost:8080/v1/someService/create
{
"latitude":"10",
"longitude":"20"
}
我来了
11:36:51.814 [qtp931940545-13] ERROR i.s.i.c.SwaggerOperationController - failed to invoke method public io.swagger.inflector.models.ResponseContext com.swagger.test.SomeServiceController.createPoint(io.swagger.inflector.models.RequestContext,com.swagger.test.model.Point)
java.lang.IllegalArgumentException: argument type mismatch
我的依赖:
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-inflector</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
请帮忙!我错过了什么?
【问题讨论】:
-
您是否在请求中添加了
Content-Type: application/json标头? -
@Helen 是的,我尝试了 json 和 xml(用于 xml 结构)内容类型..
-
后来我发现,控制器中的对象是ObjectNode类型的。所以这意味着swagger没有对引用模型进行任何转换?
-
不知道。可以试试最新版本的 Inflector 2.0.0-rc0 吗?
标签: java json controller swagger