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

可信网站认证不在有用吗哈尔滨网站制作前景

可信网站认证不在有用吗,哈尔滨网站制作前景,视觉差的网站,龙之网官网环境变量和封装fetch 环境变量 一般做开发,都会将接口地址配置到环境变量里。在Expo建的项目里,也可以使用环境变量。 在项目根目录新建一个.env文件,里面添加上: EXPO_PUBLIC_API_URLhttp://localhost:3000如果你用手机真机等…

环境变量和封装fetch

环境变量

一般做开发,都会将接口地址配置到环境变量里。在Expo建的项目里,也可以使用环境变量。

在项目根目录新建一个.env文件,里面添加上:

EXPO_PUBLIC_API_URL=http://localhost:3000

如果你用手机真机等局域网设备访问,就改成电脑的IP地址,例如:

EXPO_PUBLIC_API_URL=http://192.168.x.xx:3000

Expo里:

  • 环境变量的命名,全部要大写。
  • 而且必须以EXPO_PUBLIC开头,后面再自己添加其他的。

安装 urlcat

封装请求文件之前,先去安装下urlcat包:

npm i urlcat

利用它,可以非常简单的拼接URL路径和查询参数。要不然就得自己很麻烦的处理URL路径里的?号和&符号。

例如传这些参数进去:

urlcat('http://localhost:3000', '/articles', { page: 1, limit: 10 })

它就会自动转换成:

http://localhost:3000/articles?page=1&limit=10

封装 request

  • headers里,告诉接口,返回的数据格式是JSON,发送的数据格式也是JSON
  • config里,将各种参数都丢进去。根据React Native官方文档里的Fetch API 说明,传给接口的数据,要将JavaScript对象转为JSON字符串。
import urlcat from "urlcat";/*** 基础请求函数* @param { string } url - API 请求路径(如 '/articles')* @param { object } [options] - 请求配置项* @param { string } [options.method='GET'] - HTTP 方法* @param { object } [options.params] - URL 查询参数(如 { page: 1, limit: 10 })* @param { object } [options.body] - 请求体数据* @returns { Promise<object> } 返回解析后的JSON数据** @example* // 基础调用示例* request('/articles').then(data => console.log(data))** @example* // 带查询参数的 GET 请求* request('/articles', {*   params: { page: 1, limit: 10 }* })** @example* // POST 请求* // 提交表单数据* request('/auth/sign_in', {*   method: 'POST',*   body: { login: 'user', password: '123123' }* })*/
const request = async (url, { method = "GET", params, body } = {}) => {// 完整的接口地址const apiUrl = process.env.EXPO_PUBLIC_API_URL;const requestUrl = urlcat(apiUrl, url, params);// 请求头const headers = {Accept: "application/json","Content-Type": "application/json",// 待完成:传递 token};const config = {method,headers,...(body && { body: JSON.stringify(body) }),};const response = await fetch(requestUrl, config);if (!response.ok) {// 待完成:登录超时处理const { message, errors } = await response.json().catch(() => null);const error = new Error(message);error.status = response.status;error.errors = errors;throw error;}return await response.json();
};/*** GET 请求* @param { string } url - 请求地址* @param { object } [params] - 查询参数* @returns { Promise<any> } 返回解析后的JSON数据** @example* // 基本 GET 请求* get('/articles').then(data => console.log(data))** @example* // 带查询参数的 GET 请求* get('/articles', { page: 1, limit: 10 })*/
export const get = (url, params) => request(url, { method: "GET", params });/*** POST 请求* @param { string } url - 请求地址* @param { object } body - 请求体数据* @returns { Promise<any> } 返回解析后的 JSON 数据** @example* // 提交表单数据* post('/auth/sign_in', { login: 'user', password: '123123' })*/
export const post = (url, body) => request(url, { method: "POST", body });/*** PUT 请求* @param { string } url - 请求地址* @param { object } body - 请求体数据* @returns { Promise<any> } 返回解析后的 JSON 数据** @example* // 更新数据* put('/users/info', { nickname: 'clwy', company: '长乐未央公司' })*/
export const put = (url, body) => request(url, { method: "PUT", body });/*** PATCH 请求* @param { string } url - 请求地址* @param { object } body - 请求体数据* @returns { Promise<any> } 返回解析后的 JSON 数据** @example* // 部分更新数据* 注意:本项目无任何接口使用 PATCH*/
export const patch = (url, body) => request(url, { method: "PATCH", body });/*** DELETE 请求* @param { string } url - 请求地址* @returns { Promise<any> } 返回解析后的 JSON 数据** @example* // 注销用户* del('/users/me')*/
export const del = (url) => request(url, { method: "DELETE" });export default request;
// const res = await fetch(`http://192.168.1.138/search?q=${keyword}`);
// const res = await request("/search", { params: { q: keyword } });
const res = await get("/search", { q: keyword });
  // 当依赖参数是一个对象或引用类型,例如 params,// 即使它的内容没有变化,每次组件重新渲染时它的引用都会不同。// 从而导致 useEffect 不断触发,会造成无限循环请求。// 可以使用 JSON.stringify(params) 转换为字符串,来解决这个问题。useEffect(() => {fetchData();}, [url, JSON.stringify(params)]);

文章转载自:

http://4apDRkPJ.tstwx.cn
http://5BQc2gxD.tstwx.cn
http://919pCAor.tstwx.cn
http://bnlotS0Y.tstwx.cn
http://zUVNK5X4.tstwx.cn
http://aGbxne2q.tstwx.cn
http://9uxzv8uf.tstwx.cn
http://shOb54uU.tstwx.cn
http://azLnXDbc.tstwx.cn
http://llsttqsE.tstwx.cn
http://C2u9eWEo.tstwx.cn
http://y16QP5ot.tstwx.cn
http://SP3U711P.tstwx.cn
http://WoS4PWDH.tstwx.cn
http://G5qG3ww7.tstwx.cn
http://YahBCw45.tstwx.cn
http://E10pClSj.tstwx.cn
http://1d9Rm8tU.tstwx.cn
http://KVHb1dVw.tstwx.cn
http://6jFfePuG.tstwx.cn
http://WWXStYpY.tstwx.cn
http://cjLHtcC4.tstwx.cn
http://EFVg99li.tstwx.cn
http://EAzHAvU3.tstwx.cn
http://GMjuq5nd.tstwx.cn
http://uMRyN76T.tstwx.cn
http://HTM3ggaI.tstwx.cn
http://oM83Cv0I.tstwx.cn
http://Im5wi58N.tstwx.cn
http://nm2E4khV.tstwx.cn
http://www.dtcms.com/wzjs/772237.html

相关文章:

  • 溧阳网站定制如何进行网站建设
  • 深圳seo网站推广公司自适应手机模板
  • 创建站点如何做网站网站产品推广
  • 山东省级建设主管部门网站网站优化收费
  • 白蛇传奇网页版游戏新乡seo网站推广工具
  • 广州市建设厅官方网站营业推广方式
  • 制定一个网站建设方案python 直播网站开发
  • 如何制作视频网站企业公共信息服务平台
  • asp sqlite网站空间做网站需要编码吗
  • 手机版网站制作模板杭州十大科技公司排名
  • 智能科普网站平台建设方案江西网站制作的公司哪家好
  • 重庆最好的网站建设公司网站关键词搜索
  • 住宅小区物业管理系统网站建设怎么自己写网站
  • 顺的网站建设教程wordpress推荐php版本
  • 网站tkd优化100件创意产品
  • 网站建设应该学什么软件深圳做网站要
  • 招聘网站模板页宿迁网站建设托管
  • 快速排名网站如何做好seo
  • 廊坊网站建设公司哪家好做搜狗网站优化点击软
  • 怎么学网站建设东莞网站到首页排名
  • 怎么做有优惠券的网站浙江建设信息港网站考试成绩查询
  • 信用网站建设工作总结贺兰县住房城乡建设局网站
  • 设计类什么专业最挣钱seo推广有用吗
  • 国家小城镇建设政策网站wordpress阅读
  • 惠州惠阳网站建设淘宝网页版电脑版登录淘宝网
  • php网站建设入门教程企业培训考试系统题库
  • 律师事务所网站方案中国苏州网
  • 红色系网站企业网络推广做网站推广公司
  • 阳江做网站多少钱前端网站效果有哪些
  • 网站建设类文章要发多少片硬件开发需求