跳转至

应用静态资源(MagicStaticController)

应用工作空间下静态资源访问入口:按应用名称(appName)+ 路径,从工作区目录(<workspace>/<appName>.application/<子目录>/<路径>)读取文件并以二进制流写回。包含 HTML 静态文件(/html/{appName}/**)与应用资源(/resources/{appName}/**)两类。

  • 接口类型:REST 资源(@Component 继承 AbstractRuntimeController,方法返回 void,直接写回 HttpServletResponse 输出流;响应体为二进制字节流,文件不存在时返回 404
  • 基址${myapps.context-path.runtime:}(仅 runtime context-path,方法级路径分别为 /html/{appName}/**/resources/{appName}/**
  • Tag:MagicApi

公共说明

  • 鉴权(据源码):基址不在 /api/runtime/**不在 RestSecurityHandlerInterceptor 覆盖范围。鉴权由全局过滤器 RuntimeSecurityFilter/*)执行登录态校验,未登录返回 401(或 SSO 模式重定向到 /signon)。所有端点均需 accessToken,可通过 Cookie / 请求头 / query 参数任一方式传递。
  • 响应结构非 JSON。直接写回二进制字节流;文件不存在时设置 HTTP 404 并写回纯文本 "找不到指定文件"
  • 路径解析:从 request.getRequestURI() 中按 /html/{appName}/resources/{appName} 前缀截取后续部分作为相对路径;拼接 Environment.getInstance().getWorkspaceRootPath() + File.separator + appName + ".application" + (html|resources) + <相对路径> 得到物理文件,并通过 SecurityFile.resolveFile(...) 防目录穿越。

1. 获取应用 HTML 静态文件

appName 与路径读取 <workspace>/<appName>.application/html/<路径> 文件并以字节流写回。

  • 接口类型:REST 资源(文件下载,二进制响应;返回 void
  • 请求方式@RequestMapping(未限定 method,支持 GET / POST 等所有方法
  • 请求路径/html/{appName}/**(完整:{runtime-context}/html/{appName}/**
  • 鉴权:是(需 accessToken,据源码)
  • Tag:MagicApi

请求参数

参数名 位置 类型 必填 说明
appName path string 应用名称(与工作区 <appName>.application 目录对应)

请求示例

GET /html/myapp/index.html HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:二进制字节流,Content-Type 由 Servlet 容器按文件扩展名推断。

  • 成功:HTTP 200,响应体为文件字节流。
  • 失败(文件不存在):HTTP 404,响应体为纯文本 "找不到指定文件"

2. 获取应用资源文件

appName 与路径读取 <workspace>/<appName>.application/resources/<路径> 文件并以字节流写回。

  • 接口类型:REST 资源(文件下载,二进制响应;返回 void
  • 请求方式@RequestMapping(未限定 method)
  • 请求路径/resources/{appName}/**(完整:{runtime-context}/resources/{appName}/**
  • 鉴权:是(需 accessToken,据源码)
  • Tag:MagicApi

请求参数

参数名 位置 类型 必填 说明
appName path string 应用名称

请求示例

GET /resources/myapp/css/main.css HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:二进制字节流,Content-Type 由 Servlet 容器按文件扩展名推断。

  • 成功:HTTP 200,响应体为文件字节流。
  • 失败(文件不存在):HTTP 404,响应体为纯文本 "找不到指定文件"