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);
}
POST Request Method
export function rcpPost<T>(url: string, params?: string): Promise<T | null> {
return rcpRequest(url, "POST", params);
}
Request Header Declaration
let headers: rcp.RequestHeaders = {
'accept': 'application/json'
};
Session Instance Creation
let session = rcp.createSession();
Request Instance Creation
let req = new rcp.Request(url, method, headers, params);
Generic Return Definition
let getjson: T | null = null;
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;
});
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;
});
}
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
}
GET Request With then Callback
await rcpGet<PositionModel>(this.url).then((data) => {
if (data?.code === 200) {
this.positionlist = data?.data;
} else {
// Handle error
}
});
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
}
});
Top comments (0)