SpringBoot中的server.context-path
目录
一、问题引入
二、代码片段展示
2.1.接口层
2.2.application.properties
三、问题分析
3.1.server.context-path 作用
3.2.正确展示
四、HTTP请求响应码简介
4.1.响应码参考来源
4.2.源码示例
4.2.1.源码总述
4.2.2.正常情况——2XX: generally "OK"
4.2.3.重定位/重定向——3XX: relocation/redirect
4.2.3.1.300: Multiple Choices.
4.2.3.2.301: Moved Permanently.
4.2.3.3.302: Temporary Redirect.
4.2.3.4.303: See Other.
4.2.3.5.304: Not Modified.
4.2.3.6.305: Use Proxy.
4.2.4.连接错误——4XX: client error
4.2.5.服务错误——5XX: server error
一、问题引入
书接上回,SpringBoot 在 idea中的 .idea和 .iml文件-CSDN博客,我在boot-test的测试项目中使用的 SpringBoot版本为 1.3.5.RELEASE,新项目 cps-task中使用的版本为 2.4.8,造成了连接异常,问题很好解决,但涉及的bug记录一下。
首先,先看一张图片
二、代码片段展示
2.1.接口层
package com.bt.controller;import com.bt.config.DataConfig;
import com.bt.service.ReconciliationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;@Slf4j
@Controller
public class ReconciliationController implements DataConfig {@Resourceprivate ReconciliationService reconciliationService;@RequestMapping(value = "/api/cib", method = RequestMethod.GET)@ResponseBodypublic String cibReconciliation(HttpServletRequest request){String date = request.getParameter("date");if(date == null){return "date is null";}Pattern pattern = Pattern.compile(DATE_PATTERN);Matcher matcher = pattern.matcher(date);if (!matcher.matches()) {// 不输入符合预期的格式,进行下一步操作return "The format of 'date' is illegal!";}log.info("执行对账开始!!");reconciliationService.checkBillForReconciliation(BANK_ID_CIB, date);return "ok";}
}
2.2.application.properties
server.port=8899
server.context-path=/cps-task/
三、问题分析
3.1.server.context-path 作用
在Spring Boot项目中,server.context-path
属性用于设置应用程序的上下文路径(context path),这样应用就不会直接部署在根路径(/)下,而是部署在指定的路径下。然而,需要注意的是,从Spring Boot 2.0开始,server.context-path
属性已经被弃用,并被 server.servlet.context-path
所替代。
我这里在 2.4.8 的高版本中,使用了低版本的参数,造成参数未生效,所以,出现了404连接异常。
3.2.正确展示
对于Spring Boot 1.x版本,你可以在你的application.properties
或application.yml
文件中这样设置:
application.properties
server.context-path=/cps-task/
对于Spring Boot 2.x及更高版本,application.properties 文件应该这样设置:
server.servlet.context-path=/cps-task/
而application.yml 的
YAML格式的配置文件,应该这样设置:
# application.yml
server: servlet: context-path: /cps-task/
四、HTTP请求响应码简介
4.1.响应码参考来源
java.net.HttpURLConnection;
4.2.源码示例
4.2.1.源码总述
HTTP的响应代码,从1.1版本开始。
/*** The response codes for HTTP, as of version 1.1.*/// REMIND: do we want all these??// Others not here that we do want??
4.2.2.正常情况——2XX: generally "OK"
/* 2XX: generally "OK" *//*** HTTP Status-Code 200: OK.*/public static final int HTTP_OK = 200;/*** HTTP Status-Code 201: Created.*/public static final int HTTP_CREATED = 201;/*** HTTP Status-Code 202: Accepted.*/public static final int HTTP_ACCEPTED = 202;/*** HTTP Status-Code 203: Non-Authoritative Information.*/public static final int HTTP_NOT_AUTHORITATIVE = 203;/*** HTTP Status-Code 204: No Content.*/public static final int HTTP_NO_CONTENT = 204;/*** HTTP Status-Code 205: Reset Content.*/public static final int HTTP_RESET = 205;/*** HTTP Status-Code 206: Partial Content.*/public static final int HTTP_PARTIAL = 206;
4.2.3.重定位/重定向——3XX: relocation/redirect
4.2.3.1.300: Multiple Choices.
Multiple Choices指当服务器接收到一个请求,并且该请求可以通过多种不同的方式或资源来满足时,服务器可能会返回300 Multiple Choices状态码。这意味着服务器提供了多个可能的响应,但由客户端来决定选择哪一个。
当客户端收到300 Multiple Choices状态码时,它应该显示一个包含所有可能响应选项的用户界面,让用户选择一个。然而,由于这个过程可能比较复杂且用户体验不佳,因此很少有网站会这样做。
/*** HTTP Status-Code 300: Multiple Choices.*/public static final int HTTP_MULT_CHOICE = 300;
4.2.3.2.301: Moved Permanently.
Moved Permanently,是一个HTTP响应状态码,表示请求的资源已经被永久地移动到了由Location头部所指示的URL上。这是一个重定向状态码,它告诉客户端(如浏览器)自动地访问新的URL。
特点:
- 永久性:301状态码表示的是永久性的重定向,意味着资源已经不再存在于请求的URL上,而是永久地迁移到了新的位置。
- 搜索引擎优化(SEO):对于搜索引擎优化(SEO)来说,301重定向是一个重要的工具。当网站的结构发生变化,或者网页的URL发生更改时,使用301重定向可以帮助搜索引擎将旧URL的排名和权重转移到新URL上。
- 缓存:由于这是一个永久性的重定向,客户端(如浏览器)和中间缓存(如CDN)可能会缓存这个重定向信息,以便将来对相同资源的请求能够直接访问新的URL。
使用场景:
- 当网站的URL结构发生变化,但内容仍然需要被访问时。
- 当网站迁移到新的域名或子域名时。
- 当需要将网站的某个部分或页面重命名或重新组织时。
/*** HTTP Status-Code 301: Moved Permanently.*/public static final int HTTP_MOVED_PERM = 301;
4.2.3.3.302: Temporary Redirect.
Temporary Redirect,是一种HTTP重定向状态码,用于指示客户端发送的请求需要进一步重定向到另一个URL,但这次重定向是临时的。与301 Moved Permanently(永久重定向)不同,307 Temporary Redirect表明资源的移动是暂时的,客户端在将来可能会再次尝试访问原始URL。
特点:
- 保持请求方法:与其他重定向状态码(如302 Found)不同,307 Temporary Redirect要求客户端在重定向时保持原始请求的方法(如GET、POST等)不变。这意味着,如果原始请求是POST请求,重定向后的请求也应该是POST请求,而不是自动转换为GET请求。
- 临时性:307状态码表明资源的重定向是临时的,可能由于网站维护、服务器负载平衡或URL结构临时更改等原因导致。客户端应该继续尝试访问原始URL,直到服务器通知其更改已变为永久。
使用场景:
- 网站维护:当网站正在进行临时维护时,服务器可能会将用户的请求重定向到一个备份服务器或维护页面,以避免服务中断。
- URL结构更改:在网站重构或升级过程中,可能需要临时更改URL结构。使用307 Temporary Redirect可以确保在更改过程中,用户仍然能够访问网站资源。
- 负载均衡:在分布式系统中,服务器可能会根据当前负载情况将请求重定向到不同的服务器。使用307 Temporary Redirect可以确保这种重定向是临时的,并且请求方法保持不变。
/*** HTTP Status-Code 302: Temporary Redirect.*/public static final int HTTP_MOVED_TEMP = 302;
4.2.3.4.303: See Other.
See Other,是一个HTTP重定向状态码,用于指示客户端使用GET方法向另一个URI(统一资源标识符)发送请求,以获取请求的资源。以下是关于303 See Other的详细解释:
- 定义:303 See Other状态码表示客户端应使用GET方法定向获取请求的资源。这通常发生在客户端最初使用POST方法发送请求,但服务器希望客户端通过GET方法访问资源的另一个URI时。
- 特点:
- 重定向:与301 Moved Permanently和302 Found类似,303 See Other也是一种重定向状态码,但它明确要求客户端使用GET方法访问新的URI。
- 方法改变:与307 Temporary Redirect不同,303 See Other允许客户端在重定向时改变请求方法,从POST(或其他方法)变为GET。
使用场景:
- 当客户端使用POST方法提交表单,但服务器希望将用户重定向到一个新的页面以显示结果或进行进一步操作时,可以使用303 See Other状态码。
- 在某些Web应用程序中,为了防止表单的重复提交,服务器可能会在处理完POST请求后,使用303 See Other将客户端重定向到一个新的GET请求页面。
/*** HTTP Status-Code 303: See Other.*/public static final int HTTP_SEE_OTHER = 303;
4.2.3.5.304: Not Modified.
Not Modified,是一个HTTP响应状态码,用于指示客户端请求的资源自上次请求后没有发生改变,因此客户端可以继续使用其缓存的版本,而无需重新下载资源。以下是关于304 Not Modified的详细解释:
定义与特点:
- 定义:304 Not Modified状态码表示客户端请求的资源自上次请求以来没有发生修改,客户端可以使用其缓存的版本。
- 特点:
- 节省带宽:通过避免不必要的资源下载,可以显著减少网络带宽的使用。
- 提升性能:减少服务器负载,加快页面加载速度,提升用户体验。
- 依赖缓存验证:该状态码通常与缓存验证机制(如ETag或Last-Modified头部)一起使用,以确保资源的最新性。
使用场景:
- 当客户端(如浏览器)已经缓存了某个资源,并且该资源在服务器上未发生更改时,服务器会返回304 Not Modified状态码。
- 客户端在发送请求时,通常会包含一些条件请求头部(如If-Modified-Since或If-None-Match),以告诉服务器它已经拥有的资源版本信息。
- 服务器在收到这些条件请求头部后,会检查请求的资源是否自上次请求以来有所更改。如果没有更改,服务器就会返回304状态码,并且不会发送资源的内容。
/*** HTTP Status-Code 304: Not Modified.*/public static final int HTTP_NOT_MODIFIED = 304;
4.2.3.6.305: Use Proxy.
Use Proxy(使用代理)是一个常见的配置或行为,它涉及到通过代理服务器来转发HTTP请求和响应。代理服务器的作用
- 提高访问速度:代理服务器可以缓存客户请求的数据。当多个客户请求相同的数据时,代理服务器可以直接从缓存中提供数据,而无需再次从原始服务器获取,从而提高了访问速度。
- 防火墙和安全:代理服务器可以作为防火墙,限制或过滤用户对某些网站的访问。这有助于保护网络免受恶意软件的攻击,并提高用户的安全性。
- 访问限制资源:在某些情况下,用户可能无法直接访问某些网站或服务。通过代理服务器,用户可以绕过这些限制,访问被限制的资源。
- 隐藏用户身份:使用代理服务器时,外部服务器只能看到代理服务器的IP地址,而无法看到用户的真实IP地址,从而增强了用户的匿名性。
/*** HTTP Status-Code 305: Use Proxy.*/public static final int HTTP_USE_PROXY = 305;
4.2.4.连接错误——4XX: client error
/*** HTTP Status-Code 400: Bad Request.*/public static final int HTTP_BAD_REQUEST = 400;/*** HTTP Status-Code 401: Unauthorized.*/public static final int HTTP_UNAUTHORIZED = 401;/*** HTTP Status-Code 402: Payment Required.*/public static final int HTTP_PAYMENT_REQUIRED = 402;/*** HTTP Status-Code 403: Forbidden.*/public static final int HTTP_FORBIDDEN = 403;/*** HTTP Status-Code 404: Not Found.*/public static final int HTTP_NOT_FOUND = 404;/*** HTTP Status-Code 405: Method Not Allowed.* 方法不允许。例如,后端接口要求用Get请求,前段用Post请求*/public static final int HTTP_BAD_METHOD = 405;/*** HTTP Status-Code 406: Not Acceptable.*/public static final int HTTP_NOT_ACCEPTABLE = 406;/*** HTTP Status-Code 407: Proxy Authentication Required.*/public static final int HTTP_PROXY_AUTH = 407;/*** HTTP Status-Code 408: Request Time-Out.*/public static final int HTTP_CLIENT_TIMEOUT = 408;/*** HTTP Status-Code 409: Conflict.*/public static final int HTTP_CONFLICT = 409;/*** HTTP Status-Code 410: Gone.*/public static final int HTTP_GONE = 410;/*** HTTP Status-Code 411: Length Required.*/public static final int HTTP_LENGTH_REQUIRED = 411;/*** HTTP Status-Code 412: Precondition Failed.*/public static final int HTTP_PRECON_FAILED = 412;/*** HTTP Status-Code 413: Request Entity Too Large.*/public static final int HTTP_ENTITY_TOO_LARGE = 413;/*** HTTP Status-Code 414: Request-URI Too Large.*/public static final int HTTP_REQ_TOO_LONG = 414;/*** HTTP Status-Code 415: Unsupported Media Type.*/public static final int HTTP_UNSUPPORTED_TYPE = 415;
4.2.5.服务错误——5XX: server error
/*** HTTP Status-Code 500: Internal Server Error.* @deprecated it is misplaced and shouldn't have existed.* 内部服务器错误,它放错地方了,不应该存在。* (存在争议,不太确定是HTTP_SERVER_ERROR不应该存在,还是@Deprecated不应该存在)*/@Deprecatedpublic static final int HTTP_SERVER_ERROR = 500;/*** HTTP Status-Code 500: Internal Server Error.* 内部服务器错误。*/public static final int HTTP_INTERNAL_ERROR = 500;/*** HTTP Status-Code 501: Not Implemented.*/public static final int HTTP_NOT_IMPLEMENTED = 501;/*** HTTP Status-Code 502: Bad Gateway.* 网关错误。*/public static final int HTTP_BAD_GATEWAY = 502;/*** HTTP Status-Code 503: Service Unavailable.* 服务不可用*/public static final int HTTP_UNAVAILABLE = 503;/*** HTTP Status-Code 504: Gateway Timeout.* 网关超时。*/public static final int HTTP_GATEWAY_TIMEOUT = 504;/*** HTTP Status-Code 505: HTTP Version Not Supported.* 不支持HTTP版本。*/public static final int HTTP_VERSION = 505;
相关文章:

SpringBoot中的server.context-path
目录 一、问题引入 二、代码片段展示 2.1.接口层 2.2.application.properties 三、问题分析 3.1.server.context-path 作用 3.2.正确展示 四、HTTP请求响应码简介 4.1.响应码参考来源 4.2.源码示例 4.2.1.源码总述 4.2.2.正常情况——2XX: generally "OK&…...

AI绘画绘画 Stable Diffusion ,从零开始轻松变现,AI绘画副业创收指南,一天一个AI帮你赚钱小技巧!
大家好,我是灵魂画师向阳 通过长达几个月的AI绘画Stable Diffusion 系统教程,相信大家已经对AI绘画有了一个大概的认知。最近就有很多粉丝总是问我,AI绘画学会后如何进行变现,或者是做副业呢? 那今天我就分享一些目前…...

阿里云镜像站,提供了各种第三方镜像地址
阿里云提供了各项镜像缓存地址,对于很多国外服务的地址,通过阿里云缓存的地址去下载,速度会非常快。 如下,打开阿里云官方网站: 进入“镜像站”,如下图所示: 有我们常用的 npm、maven、操作系统…...

stm32入门学习11-硬件I2C和MPU
(一)I2C硬件电路 stm32内部有I2C的硬件电路,我们可以使用stm32的标准库函数来实现I2C,这可以为我们减少对软件资源的占用 I2C硬件电路常用的标准库函数 void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct); /…...
如何在C++、PHP、GO中使用AI生成PPT API接口
在当今快节奏的商业环境中,演示文稿的制作不仅需要快速,还需要具有吸引力和专业性。AI生成PPT API 服务提供了一种创新的解决方案,能够根据用户提供的内容自动生成演示文稿,极大地提高了效率和质量。本文将详细介绍AI生成PPT的优势…...

力扣面试150 逆波兰表达式求值 栈 模拟栈
Problem: 150. 逆波兰表达式求值 👨🏫 参考题解 class Solution {//纯数组模拟栈实现(推荐) 3 ms 36 MBpublic static int evalRPN(String[] tokens) {int[] numStack new int[tokens.length / 2 1];int index 0;for (String s : tokens) {swit…...

动手学深度学习V2每日笔记(深度卷积神经网络AlexNet)
本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1h54y1L7oe/spm_id_from333.788.recommend_more_video.0&vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不太理解的内容进行笔记记录&…...
室内定位:紧耦合的学习惯性里程 (TLIO)
a### TLIO论文解读:紧耦合的学习惯性测程 (TLIO) 在惯性测量单元 (IMU) 领域,如何在短时间内精确地估计位置和姿态一直是一个挑战。最近,论文《TLIO: Tight Learned Inertial Odometry》提出了一种创新的方法,通过将深度学习与扩展卡尔曼滤波器 (EKF) 紧密结合,来解决这一…...
【面试之算法篇】寻找二叉树中两个节点的最低公共祖先
题目 给定一个树的根节点root和两个子节点a,b,返回二叉树中两个节点的最低公共祖先。二叉树每个节点的值都是不同的整数 10060 12040 null 4 74和7的最低公共祖先是120,60和40的最低公共祖先是60 思路 两个节点的祖先会有多个,只有是祖先的节点才有可能会是最低公共…...
使用Unity开发编辑系统时复制物体的一些细节问题
首先是复制一个GameObject时组件中的变量内容的复制问题,这个在Unity复制对象时让私有变量也被复制的简单方法这篇博客里面做了说明,但是其实还有一个问题,就是有些时候需要被复制的物体在刚创建出来的时候需要自动执行一些操作,这…...

【C++】模版初阶+STL简介
🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、函数模版💥1.1 函数模板概念💥1.2 函数模板格式💥1…...
Vue3中的toRef和toRefs的区别和用法
刚做了Ref和Reactive区别及使用方法笔记,再来总结一下,toRef 和 toRefs 的作用、用法、区别 1、作用和区别 toRef 和 toRefs 可以用来复制 reactive 里面的属性然后转成 ref,而且它既保留了响应式,也保留了引用,也就…...
【docker快捷部署系列一】docker快速入门,安装docker,解决运行Docker Quickstart Terminal出错
1、docker快速入门 视频链接 知识点概述 docker是轻量级虚拟机image是镜像 相当于虚拟机快照container是容器,相当于运行起来的虚拟机程序Dockerfile 是创建docker镜像的自动化脚本docker-compose 是一个定义和运行多个容器命令的工具,包括运行Docker…...

vulnhub靶机实战_DC-8
一、靶机下载 靶机下载链接汇总:https://download.vulnhub.com/使用搜索功能,搜索dc类型的靶机即可。本次实战使用的靶机是:DC-8系统:Debian下载链接:https://download.vulnhub.com/dc/DC-8.zip 二、靶机启动 下载完…...

如何做到项目真实性优化?保姆级写简历指南第五弹!
大家好,我是程序员鱼皮。做知识分享这些年来,我看过太多简历、也帮忙修改过很多的简历,发现很多同学是完全不会写简历的、会犯很多常见的问题,不能把自己的优势充分展示出来,导致措施了很多面试机会,实在是…...
Python Beautiful Soup介绍
在Web数据抓取和网页解析的世界里,Python以其简洁的语法和丰富的库资源成为了许多开发者的首选语言。而Beautiful Soup,作为Python中一个强大的HTML和XML解析库,更是以其易用性和灵活性赢得了广泛的赞誉。本文将带你走进Beautiful Soup的世界…...

NDI Tools汉化版的安装
目录 一、安装包下载 二、安装英文版 三、安装汉化版 NDI(Network Device Interface)即网络设备接口,是由美国 NewTek 公司开发的免费标准,它可使兼容的视频产品以高质量、低延迟、精确到帧的方式通过网络进行通讯、传输和接收广播级质量的视频,非常适合在现场直播制作…...

【JAVA多线程】AQS,JAVA并发包的核心
目录 1.概述 1.1.什么是AQS 1.2.AQS和BlockQueue的区别 1.3.AQS的结构 2.源码分析 2.1.CLH队列 2.2.模板方法的实现 2.2.1.独占模式 1.获取资源 2.释放资源 2.2.2.共享模式 1.概述 1.1.什么是AQS AQS非常非常重要,可以说是JAVA并发包(java.…...

springcloud loadbalancer nacos无损发布
前言 故事背景 jenkins部署时总是会有几秒钟接口调用报错,观察日志是因为流量被下发到已下线的服务,重启脚本在停止应用之前先调用nacos注销实例api后再重启依然会短暂出现此问题。项目架构是springcloud alibaba,通过openfeign进行微服务之间调用&…...
React原理
函数式编程 一种编程范式,概念比较多纯函数不可变值vdom和diff Vue2.x Vue3.x React 三者实现vdom细节都不同核心概念和实现思路,都一样h函数 用来生成vnode的函数 vnode数据结构 {tag: div,props: {className: div-class},children: [{tag: p,children: 测试}, ...] }pat…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...