从CSE 1.X 升级到 CSE 2.X后,接口配置的swagger注解@ApiImplicitParams 参数失效
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginnen Sie bei org.apache.servicecomb.common.rest.codec.RestCodec#restToArgs und RestOperationMeta#init und vergleichen Sie anschließend die im Issue gezeigten Pfade zur Typ-Erstellung in CSE 1.X und 2.X. Prüfen Sie, wie Swagger @ApiImplicitParams allowableValues und verwandte Annotationen in CSE 2.X und 3.X dargestellt werden. Die Aufgabe ist abgeschlossen, wenn festgestellt wurde, ob die Validierungskompatibilität mit 1.X erforderlich ist, und bestätigt wurde, ob ähnliche Annotationen Enum-Informationen verlieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
问题背景:
从CSE 1.X 升级到 CSE 2.X后,接口配置的swagger注解@ApiImplicitParams 参数失效
接口定义如下:
@RequestMapping(path = "/v1/test", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "x-test-header", dataType = "string", required = false,
paramType = "header", value = "xxx",
allowableValues = "true,false")})
public String testV1(HttpServletRequest request) {
return "ok";
}
使用CSE 1.X时,如果传入的header不是true或者false,报错如下:
{
"message": "Parameter is not valid for operation [XXX.XXX.testV1]. Parameter is [x-test-header]. Processor is [header]."
}
使用CSE 3.X时,接口无报错
问题分析:
通过对比CSE 1.X和2.X的代码,发现org.apache.servicecomb.common.rest.codec.RestCodec#restToArgs将request请求转发为请求对象的过程中,org.apache.servicecomb.common.rest.definition.RestOperationMeta#init中创建Type的代码进行了调整
从
Method method = operationMeta.getMethod();
Type[] genericParamTypes = method.getGenericParameterTypes();
调整为
(Type)operationMeta.getSwaggerProducerOperation().getSwaggerParameterTypes().get(parameter.getName())
导致type丢失了枚举信息
请帮忙确认是否需要跟CSE 1.X保持兼容以及其他类似注解是否有相同问题
- Vorherrschende Sprache
- Java
- Sterne
- 1.9k
- Forks
- 813
- Ø Merge
- 8 T. 23 Std.
- Gemergte PRs (30 T.)
- 1
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/servicecomb-java-chassis
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
apache/servicecomb-java-chassis#5106 ·
-
question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
apache/servicecomb-java-chassis#5153 · 1 Kommentar ·
-
[QUESTION] - 请发布3.x的最新版本 Offenquestion
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
apache/servicecomb-java-chassis#5146 ·
-
[FEATURE] - When will ServiceComb support Spring Boot 4.x, Spring Framework 7.x, and Jackson 3.x? Offenenhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
apache/servicecomb-java-chassis#5145 ·
-
2.x bug
apache/servicecomb-java-chassis#5141 · 1 zugewiesene Person ·
Alle Issues in apache/servicecomb-java-chassis
Ähnliche Issues
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
inu-appcenter/memorIN-backend#288 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
frontend maui-pilot pilot-ask question
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Offenarea/plugin
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
kestra-io/plugin-kestra#190 ·