Skip to content

Web

web功能包用于创建一个web服务器,提供了前端交互访问的http接口、web socketweb静态资源服务。

开始中创建了rsup的配置文件config.toml,其中包含了web服务的配置。

toml
[web]
port = 8888
static_dir = "/opt/rsup/web"

配置端口号默认8888,配置静态资源目录,默认为/opt/rsup/web(这是macos,windows系统查看)。

web服务提供的数据能力可以为自己所用,不使用默认提供的前端页面能力。可用于服务端、web端、桌面端。

http 服务

http请求接口前缀为/api,分功能模块,又分为:

  • /pkg/* 提供了获取项目依赖相关的信息。
  • /env/* 提供获取当前环境下的node 版本信息,包括:npm版本、pnpm版本、yarn版本。

http请求统一响应格式为:

rust
#[derive(Deserialize, Serialize)]
pub struct ResParams<T> {
    success: bool,
    msg: String,
    data: Option<T>,
}
impl<T> ResParams<T> {
    pub fn ok(data: T) -> ResParams<T> {
        ResParams {
            success: true,
            data: Some(data),
            msg: String::from("ok"),
        }
    }
    pub fn err(msg: String) -> ResParams<T> {
        ResParams {
            success: false,
            data: None,
            msg,
        }
    }
}

/pkg

  • /get 返回所有依赖信息。

    没有请求参数;

    响应Response返回当前项目所有的依赖最新版本信息。数据结构信息查看Pkg数据结构定义

  • /update 更新指定的依赖到指定版本

    升级指定的依赖到指定版本。

    请求参数结构体定义Request

    rs
    #[derive(Debug, Serialize, Deserialize, Clone)]
    pub struct UpdateParams {
        pub name: String,
        pub version: String,
        pub is_dev: bool,
        // 是否是切换依赖类型
        // 开发依赖包、运行时依赖包
        pub is_change: Option<bool>,
    }

    响应Response为标准响应结构体。

  • /graph 查询指定依赖的依赖关系图。

    请求参数结构体定义Request

    rs
    #[derive(Deserialize, Serialize, Debug)]
    pub struct RelationGraphReq {
        pub name: String,
    }

    响应Response数据为当前依赖数据信息,包括根据lock文件解析出的关系数据。数据结构定义请查看PkgInfo数据结构定义

  • /remove 移除指定的依赖

    请求参数结构体定义Request

    rs
    #[derive(Debug, Serialize, Deserialize, Clone)]
    pub struct RemoveParams {
        pub name: String,
        pub is_dev: bool,
    }

    响应Response为标准响应结构体。

  • /quickInstall 快速一键安装依赖

    请求参数结构体定义Request

    rs
    #[derive(Debug, Serialize, Deserialize, Clone)]
    pub struct QuickInstallParams {
        pub manager_name: String,
        pub is_registry: bool,
        pub registry: Option<String>,
        pub params: Option<Vec<String>>,
    }

    响应Response为标准响应结构体。

  • /batchUpdate 批量更新依赖

    请求参数结构体定义Request,批量更新分为pathc/minor/major版本更新,更新参数为单个UpdateParams结构体的集合Vec<UpdateParams>.

    响应参数结构体定义Response为标准响应结构体,响应数据为集合Vec<String>.

  • /reload 重新加载依赖

    请求参数无.

    响应参数结构体定义Response为标准响应结构体.

/env

  • /get 返回当前环境node\ pnpm \ npm 等版本信息。

    没有请求参数;

    响应Response返回当前环境node\ pnpm \ npm 等版本信息。

    rs
    #[derive(Deserialize, Serialize, Clone)]
    pub struct Env {
        /// 命令名称
        pub name: String,
        /// 命令版本
        pub version: String,
        /// 命令路径
        pub path: String,
        /// 命令是否是批处理操作
        pub is_cmd: bool,
    }
    
    #[derive(Deserialize, Serialize)]
    pub struct EnvVec {
        /// node
        #[serde(skip_serializing_if = "Option::is_none")]
        pub node: Option<Env>,
        /// npm
        #[serde(skip_serializing_if = "Option::is_none")]
        pub npm: Option<Env>,
        /// pnpm
        #[serde(skip_serializing_if = "Option::is_none")]
        pub pnpm: Option<Env>,
        /// yarn
        #[serde(skip_serializing_if = "Option::is_none")]
        pub yarn: Option<Env>,
    }

web socket 服务

主要用于获取当前项目依赖的最新版本信息,依赖信息是异步请求,前端页面实现加载状态。在请求完成后发送消息给前端。

本地服务启动后,访问/ws 可连接websocket服务。支持多个客户端连接,数据之间是共享的。

Released under the Apache License.