|  | @@ -2,8 +2,8 @@
 | 
	
		
			
				|  |  |  export class CloudObject {
 | 
	
		
			
				|  |  |      className: string;
 | 
	
		
			
				|  |  |      id: string | null = null;
 | 
	
		
			
				|  |  | -    createdAt: any;
 | 
	
		
			
				|  |  | -    updatedAt: any;
 | 
	
		
			
				|  |  | +    createdAt:any;
 | 
	
		
			
				|  |  | +    updatedAt:any;
 | 
	
		
			
				|  |  |      data: Record<string, any> = {};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      constructor(className: string) {
 | 
	
	
		
			
				|  | @@ -29,7 +29,7 @@ export class CloudObject {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async save() {
 | 
	
		
			
				|  |  |          let method = "POST";
 | 
	
		
			
				|  |  | -        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}`;
 | 
	
		
			
				|  |  | +        let url = `https://dev.fmode.cn/parse/classes/${this.className}`;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 更新
 | 
	
		
			
				|  |  |          if (this.id) {
 | 
	
	
		
			
				|  | @@ -61,7 +61,7 @@ export class CloudObject {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async destroy() {
 | 
	
		
			
				|  |  |          if (!this.id) return;
 | 
	
		
			
				|  |  | -        const response = await fetch(`http://dev.fmode.cn:1337/parse/classes/${this.className}/${this.id}`, {
 | 
	
		
			
				|  |  | +        const response = await fetch(`https://dev.fmode.cn/parse/classes/${this.className}/${this.id}`, {
 | 
	
		
			
				|  |  |              headers: {
 | 
	
		
			
				|  |  |                  "x-parse-application-id": "dev"
 | 
	
		
			
				|  |  |              },
 | 
	
	
		
			
				|  | @@ -88,7 +88,7 @@ export class CloudQuery {
 | 
	
		
			
				|  |  |          this.className = className;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    include(...fileds: string[]) {
 | 
	
		
			
				|  |  | +    include(...fileds:string[]) {
 | 
	
		
			
				|  |  |          this.queryParams["include"] = fileds;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      greaterThan(key: string, value: any) {
 | 
	
	
		
			
				|  | @@ -112,15 +112,12 @@ export class CloudQuery {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      equalTo(key: string, value: any) {
 | 
	
		
			
				|  |  | -        // 确保 this.queryParams["where"] 已经初始化为对象
 | 
	
		
			
				|  |  | -        if (!this.queryParams["where"]) {
 | 
	
		
			
				|  |  | -            this.queryParams["where"] = {};  // 防止未初始化的情况
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        if (!this.queryParams["where"]) this.queryParams["where"] = {};
 | 
	
		
			
				|  |  |          this.queryParams["where"][key] = value;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async get(id: string) {
 | 
	
		
			
				|  |  | -        const url = `http://dev.fmode.cn:1337/parse/classes/${this.className}/${id}?`;
 | 
	
		
			
				|  |  | +        const url = `https://dev.fmode.cn/parse/classes/${this.className}/${id}?`;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const response = await fetch(url, {
 | 
	
		
			
				|  |  |              headers: {
 | 
	
	
		
			
				|  | @@ -134,26 +131,30 @@ export class CloudQuery {
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const json = await response?.json();
 | 
	
		
			
				|  |  | -        return json || {};
 | 
	
		
			
				|  |  | +        if (json) {
 | 
	
		
			
				|  |  | +            let existsObject = this.dataToObj(json)
 | 
	
		
			
				|  |  | +            return existsObject;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return null
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    async find() {
 | 
	
		
			
				|  |  | -        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
 | 
	
		
			
				|  |  | +    async find():Promise<Array<CloudObject>> {
 | 
	
		
			
				|  |  | +        let url = `https://dev.fmode.cn/parse/classes/${this.className}?`;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          let queryStr = ``
 | 
	
		
			
				|  |  | -        Object.keys(this.queryParams).forEach(key => {
 | 
	
		
			
				|  |  | +        Object.keys(this.queryParams).forEach(key=>{
 | 
	
		
			
				|  |  |              let paramStr = JSON.stringify(this.queryParams[key]);
 | 
	
		
			
				|  |  | -            if (key == "include") {
 | 
	
		
			
				|  |  | +            if(key=="include"){
 | 
	
		
			
				|  |  |                  paramStr = this.queryParams[key]?.join(",")
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if (queryStr) {
 | 
	
		
			
				|  |  | +            if(queryStr) {
 | 
	
		
			
				|  |  |                  url += `${key}=${paramStr}`;
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  |                  url += `&${key}=${paramStr}`;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |          // if (Object.keys(this.queryParams["where"]).length) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  |          // }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const response = await fetch(url, {
 | 
	
	
		
			
				|  | @@ -169,12 +170,13 @@ export class CloudQuery {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const json = await response?.json();
 | 
	
		
			
				|  |  |          let list = json?.results || []
 | 
	
		
			
				|  |  | -        let objList = list.map((item: any) => this.dataToObj(item))
 | 
	
		
			
				|  |  | +        let objList = list.map((item:any)=>this.dataToObj(item))
 | 
	
		
			
				|  |  |          return objList || [];
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      async first() {
 | 
	
		
			
				|  |  | -        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
 | 
	
		
			
				|  |  | +        let url = `https://dev.fmode.cn/parse/classes/${this.className}?`;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (Object.keys(this.queryParams["where"]).length) {
 | 
	
		
			
				|  |  |              const whereStr = JSON.stringify(this.queryParams["where"]);
 | 
	
	
		
			
				|  | @@ -201,7 +203,7 @@ export class CloudQuery {
 | 
	
		
			
				|  |  |          return null
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    dataToObj(exists: any): CloudObject {
 | 
	
		
			
				|  |  | +    dataToObj(exists:any):CloudObject{
 | 
	
		
			
				|  |  |          let existsObject = new CloudObject(this.className);
 | 
	
		
			
				|  |  |          existsObject.set(exists);
 | 
	
		
			
				|  |  |          existsObject.id = exists.objectId;
 | 
	
	
		
			
				|  | @@ -217,7 +219,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |          super("_User"); // 假设用户类在Parse中是"_User"
 | 
	
		
			
				|  |  |          // 读取用户缓存信息
 | 
	
		
			
				|  |  |          let userCacheStr = localStorage.getItem("NCloud/dev/User")
 | 
	
		
			
				|  |  | -        if (userCacheStr) {
 | 
	
		
			
				|  |  | +        if(userCacheStr){
 | 
	
		
			
				|  |  |              let userData = JSON.parse(userCacheStr)
 | 
	
		
			
				|  |  |              // 设置用户信息
 | 
	
		
			
				|  |  |              this.id = userData?.objectId;
 | 
	
	
		
			
				|  | @@ -226,7 +228,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    sessionToken: string | null = ""
 | 
	
		
			
				|  |  | +    sessionToken:string|null = ""
 | 
	
		
			
				|  |  |      /** 获取当前用户信息 */
 | 
	
		
			
				|  |  |      async current() {
 | 
	
		
			
				|  |  |          if (!this.sessionToken) {
 | 
	
	
		
			
				|  | @@ -234,7 +236,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |              return null;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return this;
 | 
	
		
			
				|  |  | -        // const response = await fetch(`http://dev.fmode.cn:1337/parse/users/me`, {
 | 
	
		
			
				|  |  | +        // const response = await fetch(`https://dev.fmode.cn/parse/users/me`, {
 | 
	
		
			
				|  |  |          //     headers: {
 | 
	
		
			
				|  |  |          //         "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  |          //         "x-parse-session-token": this.sessionToken // 使用sessionToken进行身份验证
 | 
	
	
		
			
				|  | @@ -250,45 +252,9 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |          // return result;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -     /** 获取特定用户信息 */
 | 
	
		
			
				|  |  | -     async getUserByUsername(objectId: string) {
 | 
	
		
			
				|  |  | -        const url = `http://dev.fmode.cn:1337/parse/classes/_User?where=${JSON.stringify({ objectId })}`;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        const response = await fetch(url, {
 | 
	
		
			
				|  |  | -            headers: {
 | 
	
		
			
				|  |  | -                "accept": "*/*",
 | 
	
		
			
				|  |  | -                "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | -                "x-parse-master-key": "devmk", // 使用您的 Master Key
 | 
	
		
			
				|  |  | -                "Content-Type": "application/json"
 | 
	
		
			
				|  |  | -            },
 | 
	
		
			
				|  |  | -            method: "GET",
 | 
	
		
			
				|  |  | -            mode: "cors",
 | 
	
		
			
				|  |  | -            credentials: "omit"
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        const result = await response?.json();
 | 
	
		
			
				|  |  | -        if (result?.error) {
 | 
	
		
			
				|  |  | -            console.error(result?.error);
 | 
	
		
			
				|  |  | -            return null; // 返回 null 表示未找到用户或发生错误
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // 处理查询结果
 | 
	
		
			
				|  |  | -        if (result.results && result.results.length > 0) {
 | 
	
		
			
				|  |  | -            const userData = result.results[0]; // 获取第一个匹配的用户
 | 
	
		
			
				|  |  | -            const user = new CloudUser();
 | 
	
		
			
				|  |  | -            user.set(userData);
 | 
	
		
			
				|  |  | -            user.id = userData.objectId;
 | 
	
		
			
				|  |  | -            user.createdAt = userData.createdAt;
 | 
	
		
			
				|  |  | -            user.updatedAt = userData.updatedAt;
 | 
	
		
			
				|  |  | -            return user; // 返回找到的用户对象
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        return null; // 如果没有找到用户,返回 null
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      /** 登录 */
 | 
	
		
			
				|  |  | -    async login(username: string, password: string): Promise<CloudUser | null> {
 | 
	
		
			
				|  |  | -        const response = await fetch(`http://dev.fmode.cn:1337/parse/login`, {
 | 
	
		
			
				|  |  | +    async login(username: string, password: string):Promise<CloudUser|null> {
 | 
	
		
			
				|  |  | +        const response = await fetch(`https://dev.fmode.cn/parse/login`, {
 | 
	
		
			
				|  |  |              headers: {
 | 
	
		
			
				|  |  |                  "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  |                  "Content-Type": "application/json"
 | 
	
	
		
			
				|  | @@ -302,14 +268,14 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |              console.error(result?.error);
 | 
	
		
			
				|  |  |              return null;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          // 设置用户信息
 | 
	
		
			
				|  |  |          this.id = result?.objectId;
 | 
	
		
			
				|  |  |          this.sessionToken = result?.sessionToken;
 | 
	
		
			
				|  |  |          this.data = result; // 保存用户数据
 | 
	
		
			
				|  |  |          // 缓存用户信息
 | 
	
		
			
				|  |  |          console.log(result)
 | 
	
		
			
				|  |  | -        localStorage.setItem("NCloud/dev/User", JSON.stringify(result))
 | 
	
		
			
				|  |  | +        localStorage.setItem("NCloud/dev/User",JSON.stringify(result))
 | 
	
		
			
				|  |  |          return this;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -320,7 +286,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        const response = await fetch(`http://dev.fmode.cn:1337/parse/logout`, {
 | 
	
		
			
				|  |  | +        const response = await fetch(`https://dev.fmode.cn/parse/logout`, {
 | 
	
		
			
				|  |  |              headers: {
 | 
	
		
			
				|  |  |                  "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  |                  "x-parse-session-token": this.sessionToken
 | 
	
	
		
			
				|  | @@ -328,18 +294,26 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |              method: "POST"
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        const result = await response?.json();
 | 
	
		
			
				|  |  | +        let result = await response?.json();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if (result?.error) {
 | 
	
		
			
				|  |  |              console.error(result?.error);
 | 
	
		
			
				|  |  | +            if(result?.error=="Invalid session token"){
 | 
	
		
			
				|  |  | +                this.clearUserCache()
 | 
	
		
			
				|  |  | +                return true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              return false;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        this.clearUserCache()
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    clearUserCache(){
 | 
	
		
			
				|  |  |          // 清除用户信息
 | 
	
		
			
				|  |  |          localStorage.removeItem("NCloud/dev/User")
 | 
	
		
			
				|  |  |          this.id = null;
 | 
	
		
			
				|  |  |          this.sessionToken = null;
 | 
	
		
			
				|  |  |          this.data = {};
 | 
	
		
			
				|  |  | -        return true;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /** 注册 */
 | 
	
	
		
			
				|  | @@ -350,7 +324,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |              ...additionalData // 合并额外的用户数据
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        const response = await fetch(`http://dev.fmode.cn:1337/parse/users`, {
 | 
	
		
			
				|  |  | +        const response = await fetch(`https://dev.fmode.cn/parse/users`, {
 | 
	
		
			
				|  |  |              headers: {
 | 
	
		
			
				|  |  |                  "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  |                  "Content-Type": "application/json"
 | 
	
	
		
			
				|  | @@ -368,7 +342,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |          // 设置用户信息
 | 
	
		
			
				|  |  |          // 缓存用户信息
 | 
	
		
			
				|  |  |          console.log(result)
 | 
	
		
			
				|  |  | -        localStorage.setItem("NCloud/dev/User", JSON.stringify(result))
 | 
	
		
			
				|  |  | +        localStorage.setItem("NCloud/dev/User",JSON.stringify(result))
 | 
	
		
			
				|  |  |          this.id = result?.objectId;
 | 
	
		
			
				|  |  |          this.sessionToken = result?.sessionToken;
 | 
	
		
			
				|  |  |          this.data = result; // 保存用户数据
 | 
	
	
		
			
				|  | @@ -377,21 +351,21 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      override async save() {
 | 
	
		
			
				|  |  |          let method = "POST";
 | 
	
		
			
				|  |  | -        let url = `http://dev.fmode.cn:1337/parse/users`;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        let url = `https://dev.fmode.cn/parse/users`;
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |          // 更新用户信息
 | 
	
		
			
				|  |  |          if (this.id) {
 | 
	
		
			
				|  |  |              url += `/${this.id}`;
 | 
	
		
			
				|  |  |              method = "PUT";
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        let data: any = JSON.parse(JSON.stringify(this.data))
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +        let data:any = JSON.parse(JSON.stringify(this.data))
 | 
	
		
			
				|  |  |          delete data.createdAt
 | 
	
		
			
				|  |  |          delete data.updatedAt
 | 
	
		
			
				|  |  |          delete data.ACL
 | 
	
		
			
				|  |  |          delete data.objectId
 | 
	
		
			
				|  |  |          const body = JSON.stringify(data);
 | 
	
		
			
				|  |  | -        let headersOptions: any = {
 | 
	
		
			
				|  |  | +        let headersOptions:any = {
 | 
	
		
			
				|  |  |              "content-type": "application/json;charset=UTF-8",
 | 
	
		
			
				|  |  |              "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  |              "x-parse-session-token": this.sessionToken, // 添加sessionToken以进行身份验证
 | 
	
	
		
			
				|  | @@ -403,7 +377,7 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |              mode: "cors",
 | 
	
		
			
				|  |  |              credentials: "omit"
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |          const result = await response?.json();
 | 
	
		
			
				|  |  |          if (result?.error) {
 | 
	
		
			
				|  |  |              console.error(result?.error);
 | 
	
	
		
			
				|  | @@ -411,25 +385,36 @@ export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  |          if (result?.objectId) {
 | 
	
		
			
				|  |  |              this.id = result?.objectId;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        localStorage.setItem("NCloud/dev/User", JSON.stringify(this.data))
 | 
	
		
			
				|  |  | +        localStorage.setItem("NCloud/dev/User",JSON.stringify(this.data))
 | 
	
		
			
				|  |  |          return this;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +export class CloudApi{
 | 
	
		
			
				|  |  | +    async fetch(path:string,body:any,options?:{
 | 
	
		
			
				|  |  | +        method:string
 | 
	
		
			
				|  |  | +        body:any
 | 
	
		
			
				|  |  | +    }){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -// fetch("http://dev.fmode.cn:1337/parse/classes/_User?where={%22username%22:%22chengnan%22}", {
 | 
	
		
			
				|  |  | -//     "headers": {
 | 
	
		
			
				|  |  | -//       "accept": "*/*",
 | 
	
		
			
				|  |  | -//       "accept-language": "zh-CN,zh;q=0.9",
 | 
	
		
			
				|  |  | -//       "if-none-match": "W/\"fe-JIlchyuW4LZub+2xCTNV/QiJ0wc\"",
 | 
	
		
			
				|  |  | -//       "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | -//       "x-parse-master-key": "devmk"
 | 
	
		
			
				|  |  | -//     },
 | 
	
		
			
				|  |  | -//     "referrer": "http://localhost:4040/",
 | 
	
		
			
				|  |  | -//     "referrerPolicy": "strict-origin-when-cross-origin",
 | 
	
		
			
				|  |  | -//     "body": null,
 | 
	
		
			
				|  |  | -//     "method": "GET",
 | 
	
		
			
				|  |  | -//     "mode": "cors",
 | 
	
		
			
				|  |  | -//     "credentials": "omit"
 | 
	
		
			
				|  |  | -//   });
 | 
	
		
			
				|  |  | +        let reqOpts:any =  {
 | 
	
		
			
				|  |  | +            headers: {
 | 
	
		
			
				|  |  | +                "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | +                "Content-Type": "application/json"
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            method: options?.method || "POST",
 | 
	
		
			
				|  |  | +            mode: "cors",
 | 
	
		
			
				|  |  | +            credentials: "omit"
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(body||options?.body){
 | 
	
		
			
				|  |  | +            reqOpts.body = JSON.stringify(body || options?.body);
 | 
	
		
			
				|  |  | +            reqOpts.json = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        let host = `https://dev.fmode.cn`
 | 
	
		
			
				|  |  | +        // host = `http://127.0.0.1:1337`
 | 
	
		
			
				|  |  | +        let url = `${host}/api/`+path
 | 
	
		
			
				|  |  | +        console.log(url,reqOpts)
 | 
	
		
			
				|  |  | +        const response = await fetch(url,reqOpts);
 | 
	
		
			
				|  |  | +        let json = await response.json();
 | 
	
		
			
				|  |  | +        return json
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |