테스트 사이트 - 개발 중인 베타 버전입니다

그누보드6 플러그인 api swagger 채택완료

앨리스a 1년 전 조회 1,083

플러그인의 유저 라우터에 등록한 api는 swagger에 나오지 않는데 혹시 나오게 하는방법 있을까요?

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
녹두탐
1년 전

'include_router' 메서드의 'include_in_schema' 옵션을 True(기본값)로 설정하면 swagger UI에 출력됩니다.

 

'{플러그인 경로}/admin/__init__.py' 와 '{플러그인 경로}/user/__init__.py'에서 확인 하실 수 있으며,

각 개별 라우터에서도 동일한 옵션을 설정할 수 있습니다.

 

</p>

<p># plugin\demo_plugin\admin\__init__.py</p>

<p>def register_admin_router():</p>

<p>    """관리자에 플러그인 관리자 메뉴를 등록합니다.</p>

<p> </p>

<p>    Examples:</p>

<p>        관리자는 Depends(check_admin_access) 의존성을 추가 해야 접근권한이 보호됩니다.</p>

<p>        아래 관리자 라우터의 prefix 는 빈칸이면 안됩니다. 기본값은 /admin 입니다.</p>

<p>    """</p>

<p>    app.include_router(admin_router, prefix="/admin", tags=[module_name], dependencies=[Depends(check_admin_access)], include_in_schema=False)</p>

<p> </p>

<p> </p>

<p># plugin\demo_plugin\user\__init__.py</p>

<p>def register_user_router():</p>

<p>    app.include_router(router,</p>

<p>                       prefix=router_prefix,</p>

<p>                       tags=[module_name],</p>

<p>                       include_in_schema=False,</p>

<p>                       dependencies=[Depends(check_use_template),</p>

<p>                                     Depends(set_template_basic_data)])</p>

<p> </p>

<p> </p>

<p># plugin\demo_plugin\admin\admin_router.py</p>

<p>@admin_router.get("/test_demo_admin",</p>

<p>                          include_in_schema=True)  # 각 라우터에 개별적으로 설정 가능</p>

<p>async def show(request: Request):</p>

<p>    request.session["menu_key"] = module_name</p>

<p>    request.session["plugin_submenu_key"] = module_name + "1"</p>

<p> </p>

<p>    return {</p>

<p>        "message": "Hello Admin Demo Plugin!",</p>

<p>        "pacakge": __package__,</p>

<p>        "__file__": __file__,</p>

<p>        "__name__": __name__,</p>

<p>    }</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인