그누보드6 플러그인 api swagger
본문
플러그인의 유저 라우터에 등록한 api는 swagger에 나오지 않는데 혹시 나오게 하는방법 있을까요?
답변 1
'include_router' 메서드의 'include_in_schema' 옵션을 True(기본값)로 설정하면 swagger UI에 출력됩니다.
'{플러그인 경로}/admin/__init__.py' 와 '{플러그인 경로}/user/__init__.py'에서 확인 하실 수 있으며,
각 개별 라우터에서도 동일한 옵션을 설정할 수 있습니다.
# plugin\demo_plugin\admin\__init__.py
def register_admin_router():
"""관리자에 플러그인 관리자 메뉴를 등록합니다.
Examples:
관리자는 Depends(check_admin_access) 의존성을 추가 해야 접근권한이 보호됩니다.
아래 관리자 라우터의 prefix 는 빈칸이면 안됩니다. 기본값은 /admin 입니다.
"""
app.include_router(admin_router, prefix="/admin", tags=[module_name], dependencies=[Depends(check_admin_access)], include_in_schema=False)
# plugin\demo_plugin\user\__init__.py
def register_user_router():
app.include_router(router,
prefix=router_prefix,
tags=[module_name],
include_in_schema=False,
dependencies=[Depends(check_use_template),
Depends(set_template_basic_data)])
# plugin\demo_plugin\admin\admin_router.py
@admin_router.get("/test_demo_admin",
include_in_schema=True) # 각 라우터에 개별적으로 설정 가능
async def show(request: Request):
request.session["menu_key"] = module_name
request.session["plugin_submenu_key"] = module_name + "1"
return {
"message": "Hello Admin Demo Plugin!",
"pacakge": __package__,
"__file__": __file__,
"__name__": __name__,
}
답변을 작성하시기 전에 로그인 해주세요.