DEV Community

Cover image for next RCP Network Request Tool class
liu yang
liu yang

Posted on

next RCP Network Request Tool class

RCP Network Request Tool Class

Implementation

GET Request Method

export function rcpGet<T>(url: string, params?: string): Promise<T | null> {
  return rcpRequest(url, "GET", params);
}
Enter fullscreen mode Exit fullscreen mode

POST Request Method

export function rcpPost<T>(url: string, params?: string): Promise<T | null> {
  return rcpRequest(url, "POST", params);
}
Enter fullscreen mode Exit fullscreen mode

Request Header Declaration

let headers: rcp.RequestHeaders = {
  'accept': 'application/json'
};
Enter fullscreen mode Exit fullscreen mode

Session Instance Creation

let session = rcp.createSession();
Enter fullscreen mode Exit fullscreen mode

Request Instance Creation

let req = new rcp.Request(url, method, headers, params);
Enter fullscreen mode Exit fullscreen mode

Generic Return Definition

let getjson: T | null = null;
Enter fullscreen mode Exit fullscreen mode

Sending Request and Handling Server Response

return session.fetch(req).then((response) => {
  Logger.error(`Request succeeded, message is ${JSON.stringify(response)}`);
  if (response.statusCode === 200) {
    Logger.error("Request succeeded");
    let result = `${JSON.stringify(response)}`;
    Logger.error("Request return data", result);
    getjson = JSON.parse(result) as T;
  } else {
    getjson = null;
  }
  session.close();
  return getjson;
}).catch((err: BusinessError) => {
  Logger.error(`err: err code is ${err.code}, err message is ${JSON.stringify(err)}`);
  session.close();
  return null;
});
Enter fullscreen mode Exit fullscreen mode

Complete Code

import { BusinessError } from '@kit.BasicServicesKit';
import { rcp } from '@kit.RemoteCommunicationKit';
import Logger from './Logger';

export function rcpGet<T>(url: string, params?: string): Promise<T | null> {
  return rcpRequest(url, "GET", params);
}

export function rcpPost<T>(url: string, params?: string): Promise<T | null> {
  return rcpRequest(url, "POST", params);
}

function rcpRequest<T>(url: string, method: string, params?: string): Promise<T | null> {
  let headers: rcp.RequestHeaders = {
    'accept': 'application/json'
  };
  let session = rcp.createSession();
  let req = new rcp.Request(url, method, headers, params);
  let getjson: T | null = null;

  return session.fetch(req).then((response) => {
    Logger.error(`Request succeeded, message is ${JSON.stringify(response)}`);
    if (response.statusCode === 200) {
      Logger.error("Request succeeded");
      let result = `${JSON.stringify(response)}`;
      Logger.error("Request return data", result);
      getjson = JSON.parse(result) as T;
    } else {
      getjson = null;
    }
    session.close();
    return getjson;
  }).catch((err: BusinessError) => {
    Logger.error(`err: err code is ${err.code}, err message is ${JSON.stringify(err)}`);
    session.close();
    return null;
  });
}
Enter fullscreen mode Exit fullscreen mode

Calling in a Page

GET Request Without then Callback

let res = await rcpGet<PositionModel>(this.url);
if (res?.code === 200) {
  this.positionlist = res?.data;
} else {
  // Handle error
}
Enter fullscreen mode Exit fullscreen mode

GET Request With then Callback

await rcpGet<PositionModel>(this.url).then((data) => {
  if (data?.code === 200) {
    this.positionlist = data?.data;
  } else {
    // Handle error
  }
});
Enter fullscreen mode Exit fullscreen mode

POST Request

let modifiedContent: UserInfo = {
  'username': '186740353353',
  'password': '123456'
};

await rcpPost<RegisterModel>(this.registerurl, JSON.stringify(modifiedContent)).then((data) => {
  if (data?.code === 200) {
    let registerModelUser: RegisterModelUser | undefined | null = data?.user;
  } else {
    // Handle error
  }
});
Enter fullscreen mode Exit fullscreen mode

Top comments (0)