我已经用openAPI生成器maven插件生成了rest api,并且我已经从MyApiDelegate
接口重写了默认方法,但是/endpoint
上的POST请求提供了501,没有实现,就好像我没有在MyApiDelegateImpl中给出该方法的我自己的实现一样。
Maven插件配置:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<configOptions>
<inputSpec>${project.basedir}/src/main/resources/latest.yaml</inputSpec>
<generatorName>spring</generatorName>
<apiPackage>my.rest.api</apiPackage>
<modelPackage>my.rest.model</modelPackage>
<supportingFilesToGenerate>ApiUtil.java</supportingFilesToGenerate>
<delegatePattern>true</delegatePattern>
<useBeanValidation>false</useBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
/* code generated by plugin */
package my.rest;
public interface MyApiDelegate {
default Optional<NativeWebRequest> getRequest() {
return Optional.empty();
}
default ResponseEntity<Void> doSmth(Smth smth) {
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
}
package my.rest.api;
public interface MyApi {
default MyApiDelegate getDelegate() {
return new MyApiDelegate() {};
}
/*...Api operations annotations...*/
@RequestMapping(value = "/endpoint",
produces = { "application/json" },
consumes = { "application/json", "application/xml" },
method = RequestMethod.POST)
default ResponseEntity<Void> doSmth(@ApiParam(value = "" ,required=true) @RequestBody Smth smth) {
return getDelegate().doSmth(smth);
}
}
我的实现:
package my.rest.api;
@Service
@RequiredArgsConstructor
public class MyApiDelegateImpl implements MyApiDelegate {
private final MyService s;
@Override
public ResponseEntity<Void> doSmth(Smth smth) {
s.doIt(smth);
return ResponseEntity.ok().build();
}
}
如何让我的程序在具体类中使用我自己的方法实现,而不是接口中提供的默认实现?
直接实现MyApi
接口以及其中的方法doSmth
,是实现这一点的一种方法。您的具体类不需要所有与web相关的注释,只需要参数和返回值,就像普通方法一样。
我不明白如何初始化接口MyApiDelegate
,但由于getDelegate
返回它的一个实现,因此调用doSmth
的默认实现,它返回HttpStatus。未实施
。
还要注意的一件事是确保部署知道如何使用实现类。如果您使用的是SpringWeb,那么仅仅标记具体类@RestController就足够了。
我已经成功地从一个。yaml打开api描述符文件,但正如问题标题中所述,我希望将这些接口的响应类型从ResponseEntity更改为我自己的类型。基本上,接口没有此签名: 对于基本上以这种方式实现的方法: 我希望生成的接口尽可能简单 同样的事情,我自己定义的类,而不是
生成器返回值 PHP7支持通过Generator::getReturn获取生成器方法return的返回值。 PHP5中我们约定使用Generator最后一次yield值作为返回值。 <?php final class AsyncTask { public function begin() { return $this->next(); } //
我有一个Java后端,提供openapi.json规范。它的目的是可以通过openapi生成器创建一个API客户端。这就是我所做的。客户端表现得很好,每个类都是完美的,它们都有它们应该拥有的属性,等等。一个例子是这个类: 如你所见,这门课看起来很好。 然后我有一个包含以下功能的服务: 那么,在执行这个类时,我期望得到什么呢?当它返回一个项目列表时,我还希望得到一个项目列表。但我得到的却是Linke
当使用带有Gradle的OpenAPI生成器时,我希望将性别化的源发送到其他源生成器插件使用的标准目录。类似于Maven生成源的东西。 到目前为止,我还不能这样做,特别是将生成限制为Java源类,而不是整个“原型项目”。 似乎OpenAPI Gradle插件的工作流程与Maven插件的工作流程并不相同。 是否有配置标志来省略所有非java代码的生成,并在“生成的源代码”文件夹(如/out/prod
**代码:(类名已重命名)** 两个版本中的CheeseDTO YAML: 使用springdoc-openapi-ui 1.3.9,我的yaml是这样生成的: 昂首阔步3注释: OpenAPi生成器maven插件 有没有办法用springdoc-openapi-ui>1.4.0生成?我必须更改我的大摇大摆的注释或更改我的java生成器吗?
本文向大家介绍Android返回键功能的实现方法,包括了Android返回键功能的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android返回键功能的实现方法。分享给大家供大家参考。具体如下: 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下并没有关闭改应用 我们可以这样做,当用户点