【问题标题】:Disable enumerative behavior for name collisions across controllers禁用跨控制器名称冲突的枚举行为
【发布时间】:2020-06-13 12:00:37
【问题描述】:

我正在使用 Springfox 为我的 Angular 客户端生成代码。

我的一个控制器MenuCardController 有一个方法getAll(),如下所示:

@RequestMapping(value = CONTROLLER_ROOT + "/menu-cards", method = RequestMethod.GET)
@PageableAsQueryParam
public Page<MenuCard> getAll(
        @PathVariable(name = "businessId") Long businessId,
        @Parameter(hidden = true) Pageable pageable
) {
    return this.menuCardService.getAll(businessId, pageable);
}

但是,生成的代码如下所示:

getAll1(businessId: number, page?: number, size?: number, sort?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<PageMenuCard>;
getAll1(businessId: number, page?: number, size?: number, sort?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PageMenuCard>>;
getAll1(businessId: number, page?: number, size?: number, sort?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PageMenuCard>>;

这基本上是正确的,但由于某种原因,名称后面会附加一个1。此控制器没有任何其他称为getAll 的方法。

查看我得到的其他生成代码:

getAll3(businessId: number, observe?: 'body', reportProgress?: boolean): Observable<Array<PaymentMethodModel>>;
getAll3(businessId: number, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<PaymentMethodModel>>>;
getAll3(businessId: number, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<PaymentMethodModel>>>;

所以问题是是否可以关闭此行为。似乎例如getAll 为整个 API 全局“保留”,而不仅仅是一个 &lt;name&gt;ControllerService 对象。

【问题讨论】:

    标签: openapi springfox


    【解决方案1】:

    尝试添加@Api:

    @Api("Menu Card")
    @RestController
    @RequestMapping("/menucard")
    public class MenuCardController {
    

    【讨论】:

    • 我的设置中似乎不存在@Api 注释。目前,我的依赖项中有来自org.springdocspringdoc-openapi-uispringdoc-openapi-data-rest
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多