当前位置: 首页 > news >正文

前端做企业网站网商之窗高仿手表

前端做企业网站,网商之窗高仿手表,邢台信息港首页,免费网站如何注册一、效果展示 通过在页面直接调用 userLogin(params) 方法,获取登录令牌 二、申请网络权限 访问网络时候首先需要申请网络权限,需要修改 src/main 目录下的 module.json5 文件,加入 requestPermissions 属性,详见官方文档 【声明权…

一、效果展示

通过在页面直接调用 userLogin(params) 方法,获取登录令牌

在这里插入图片描述

二、申请网络权限

访问网络时候首先需要申请网络权限,需要修改 src/main 目录下的 module.json5 文件,加入 requestPermissions 属性,详见官方文档
【声明权限】https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/declare-permissions-V5

{"module": {// ..."requestPermissions":[{"name" : "ohos.permission.INTERNET","usedScene": {"abilities": ["FormAbility"],"when":"inuse"}},{"name" : "ohos.permission.GET_NETWORK_INFO","usedScene": {"abilities": ["FormAbility"],"when":"inuse"}}]}
}

三、实现代码

共分为 7 个步骤,其中第 1、2、3、5 步都是创建基础实体,第 4 步为请求工具封装、第 6 步为API封装、第 7 步为页面调用测试,我会在最后贴上文件目录结构

1、创建常量类 CommonConstant.ets

在这个常量类中主要定义后端服务IP端口,以及一些需要使用的状态码信息

/*** HTTP API*/
export class Domain {// 后端服务IPstatic readonly SERVER: string = 'http://localhost:8999'}/*** HTTP状态类*/
export class HttpStatus {// 成功static readonly SUCCESS: number = 200// 失败static readonly ERROR: number = 500}export const enum ContentType {// 响应体类型JSON = 'application/json'}

2、创建请求实体类 RequestBody.ets

这个请求实体类主要可以实现简单的传输【请求地址、请求方式、请求参数】这三个参数,再经过封装的工具去发送网络请求

export class RequestBody {url: string;method: string;data: Object;constructor() {this.url = ''this.method = 'GET'this.data = new Object}
}

3、创建响应实体类 ResponseResult.ets

这个响应实体主要对应后台的返回参数,比如我这里定义的后台响应码为【code】,信息为【msg】,响应数据为【data】,这个可以自行修改

export class ResponseResult {code: number;msg: string | Resource;data: ArrayBuffer | Object | stringconstructor() {this.code = 0;this.msg = '';this.data = '';}
}

4、创建请求工具类 HttpRequest.ets

详见官方文档
【HTTP数据请求】https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/http-> request-V5
【异步并发概述 (Promise和async/await)】https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/async-concurrency-overview-V5#promise

// 这里需要引入第 2 步和第 3 步创建的请求和响应实体
import { ResponseResult } from '../response/ResponseResult'
import { RequestBody } from '../response/RequestBody'// 这里需要引入第 1 步公共常量类
import { Domain, HttpStatus, ContentType } from '../constant/CommonConstant'// 这里引用 HTTP 库
import http from '@ohos.net.http'// HTTP响应处理时候需要的库
import { BusinessError } from '@kit.BasicServicesKit';class HttpRequest {request(requestBody: RequestBody) {const promise: Promise<ResponseResult> = new Promise((resolve: Function, reject: Function) => {console.log('创建HTTP请求,请求地址:' + Domain.SERVER + requestBody.url + ',请求方式:' + requestBody.method + ',请求体:' + JSON.stringify(requestBody.data))// 创建HTTP请求const httpRequest = http.createHttp()// 在这里发送 HTTP 请求,并且需要设置Url、Header、Body等信息httpRequest.request(Domain.SERVER + requestBody.url,{method: isPost(requestBody.method) ? http.RequestMethod.POST : http.RequestMethod.GET,readTimeout: 10000,header: {'Content-Type': ContentType.JSON},connectTimeout: 10000,extraData: requestBody.data},(err: BusinessError, data: http.HttpResponse) => {// 回调之后判断是否提示 Errorif (!err) {let result = `${data.result}`let resultJSON: ResponseResult = JSON.parse(result)// 判断响应码是否成功if (data.responseCode === HttpStatus.SUCCESS) {if (resultJSON.code === 0) {console.info('请求成功:' + resultJSON.data)resolve(resultJSON)} else {reject(new Error('' + resultJSON.msg))errorDialog('' + resultJSON.msg)}} else {reject(new Error('' + resultJSON.msg))errorDialog('' + resultJSON.msg)}// 当该请求使用完毕时,调用destroy方法主动销毁httpRequest.destroy();} else {console.error('ERROR:' + JSON.stringify(err));if (err.code === 2300007) {errorDialog('无法连接至服务器,请稍后重试')}if (err.code === 2300028) {errorDialog('当前网络环境不稳定,请稍后重试')}// 当该请求使用完毕时,调用destroy方法主动销毁httpRequest.destroy();reject(new Error('当前网络环境不稳定,请稍后重试'))}})})return promise;}
}const httpRequest = new HttpRequest();
export default httpRequest as HttpRequest;// 判断是否是GET方法
function isGet(method: string): boolean | undefined {if (method === http.RequestMethod.GET) {return true;}return false;
}// 判断是否是POST方法
function isPost(method: string): boolean | undefined {if (method === http.RequestMethod.POST) {return true;}return false;
}// 提示错误
function errorDialog(msg: string) {console.error(msg)
}

5、创建一个用户登录实体 userInfo.ets

这个用户实体类包含用户的账号和密码信息,是登录所需

export class UserInfo {account: string;password: string;constructor() {this.account = ''this.password = ''}
}

6、创建一个用户API user.ets

这个API的作用就是统一格式,统一使用【url】、【data】、【method】这三个进行网络请求,也是在请求工具类 HttpRequest.ets 基础上的二次封装

// 这里引入第 4 步创建的请求工具类
import HttpRequest from '../request/HttpRequest'// 这里引入第 3 步创建的响应体
import { ResponseResult } from '../response/ResponseResult'// 这里引入第 5 步创建的自定义用户对象,主要用于定义各参数的类型
import { UserInfo } from '../../entity/userInfo'// 用户登录 API
export function userLogin(params: UserInfo): Promise<ResponseResult> {return HttpRequest.request({url: '/auth/login',data: params,method:'POST'})
}

7、在页面尝试调用 index.ets

最后在我们的页面启动时直接调用 user.ets 中的 userLogin 方法进行登录测试

// 这里需要引入第 6 步创建的用户API
import { userLogin } from '../common/api/user';@Entry
@Component
struct Index {// 在进入页面时调用 userLogin 接口进行测试aboutToAppear(): void {userLogin({account: 'admin', password: 'Admin@2024'}).then(res => {console.info('页面成功获取到用户信息:' + res.data)})}build() {RelativeContainer() {}}
}

四、目录结构

总共 7 个步骤创建了 7 个文件,希望对您有所帮助

在这里插入图片描述

http://www.15wanjia.com/news/159743.html

相关文章:

  • 静态网站的短处做网站的机构
  • Php做网站创业歪咪小麻花官方网站怎么做零售
  • 网站建设合同图表版wordpress企业建站模版
  • 多媒体在网站开发的分析印度喜欢用什么框架做外贸网站
  • 郴州网站设计无锡网站制作无锡做网站
  • 上海做网站优化公司哈尔滨智能建站模板
  • 网站主题旁边的图标怎么做邯郸中国建设银行网站
  • 网站制作公透明清晰网站开发技术服务合同
  • 建筑工程网上报建网站诚信手册学校网站建设的流程
  • 网站设计制作发展趋势科技素材
  • 网站内容的编辑和更新怎么做的绍兴网站制作公司
  • 阳泉那有做网站的织梦转易优cms
  • 鲜花网站前台数据库建设wordpress标题调用标签
  • 电商网站的银行支付接入该怎么做深达网站制作深圳公司
  • 购物网站开发教程 视频建设方案
  • 京东网站的公司地址土特产网站模板 织梦
  • 网站建设步骤 优帮云现代装修风格2022年
  • 网站系统维护一般多久如何查询域名服务商
  • 专业企业网站制作建设银行官方招聘网站
  • 优化网站快速排名软件广西南宁网站建设排行榜
  • python的网站开发源码保险网站排名
  • 什么网站做调查能赚钱qq可以上网
  • pc 手机网站源码c2c电子商务网站策划
  • 雨花区区网站建设公司做易拉宝设计的网站
  • 品牌网站的推广太原网站建设丿薇
  • 先看网站案例您的网站也可以这么做长沙营销型网站制作费用
  • 做我女朋友好吗网站中国建设网官方网站企业网银
  • 上海做网站的网站在iis里面创建网站
  • 宣传电脑的网站开发.net网站做增删改
  • 网站logo在线设计wordpress调用具体文章