在本文中,我们将给您介绍关于如何创建Swift函数或类并传递一些变量的详细内容,并且为您解答如何创建swift函数或类并传递一些变量数据的相关问题,此外,我们还将为您提供关于API接口主流协议有哪些?
在本文中,我们将给您介绍关于如何创建 Swift 函数或类并传递一些变量的详细内容,并且为您解答如何创建 swift 函数或类并传递一些变量数据的相关问题,此外,我们还将为您提供关于API 接口主流协议有哪些?如何创建 HTTP/WebSocket/TCP/UDP/gRPC 等不同协议?、Apikit 自学日记: 如何创建/生成 API 文档、ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi、Elasticsearch 索引的操作,利用 kibana (如何创建 / 删除一个 es 的索引?)的知识。
本文目录一览:- 如何创建 Swift 函数或类并传递一些变量(如何创建 swift 函数或类并传递一些变量数据)
- API 接口主流协议有哪些?如何创建 HTTP/WebSocket/TCP/UDP/gRPC 等不同协议?
- Apikit 自学日记: 如何创建/生成 API 文档
- ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi
- Elasticsearch 索引的操作,利用 kibana (如何创建 / 删除一个 es 的索引?)
如何创建 Swift 函数或类并传递一些变量(如何创建 swift 函数或类并传递一些变量数据)
如何解决如何创建 Swift 函数或类并传递一些变量
在 PHP 中,我习惯于创建这样的函数
function fun ($one,$two) { return $two; }
以后我可以在PHP中做
$variable1 = "something";
$variable2 = "something2";
echo fun($variable1,$variable2);
但我是 Xcode / Swift 5 的新手
我创建了一个类
class APIX {
var urlxtra: String
var devicetoken: String
init(urlxtra: String,devicetoken: String) {
self.urlxtra = urlxtra
self.devicetoken = devicetoken
let url = "https://www.api__url___.com/v1/"+devicetoken+"/"+urlxtra+"/"
let urlObj = URL(string: url)
var urlRequest = URLRequest(url: urlObj!)
urlRequest.httpMethod = "GET"
urlRequest.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
let task = URLSession.shared.dataTask(with: urlObj!)
task.resume()
}
}
并像这样调用它有效
let apicall = APIX(urlxtra: "somthing1",devicetoken: "something2")
但是当我这样做时
let stubToken = "somthing3";
let apicall = APIX(urlxtra: "somthing1",devicetoken: stubToken)
Xcode 说:
Cannot use instance member ''stubToken'' within property initializer; property initializers run before ''self'' is available
我该如何解决这个问题?
解决方法
我猜你做了这样的事情:
class Something {
let stubToken = "somthing3";
let apicall = APIX(urlxtra: "somthing1",deviceToken: stubToken)
}
两者都是实例属性,同时初始化(不保证它们的初始化顺序),因此一个不能依赖另一个。您需要建立依赖关系,以便在 stubToken
之前初始化 apicall
。
如果 stubToken
确实是一个常量,请将其设为静态:
class Something {
static let stubToken = "somthing3";
let apicall = APIX(urlxtra: "somthing1",deviceToken: Something.stubToken)
}
如果它是一个变量,您可以在apicall
中初始化init
,或者按照其他答案的建议将第二个变量设为lazy
几种可能的解决方案
声明为 lazy
let stubToken = "somthing3";
lazy var apicall = APIX(urlxtra: "somthing1",deviceToken: stubToken)
或在 init
方法中初始化它
let stubToken = "somthing3";
let apicall: APIX
init() {
apicall = APIX(urlxtra: "somthing1",deviceToken: stubToken)
}
或者如果变量可以更改,则将它们传递给 init 方法
let apicall: APIX
init(urlxtra: String,stubToken: String) {
apicall = APIX(urlxtra: urlxtra,deviceToken: stubToken)
}
API 接口主流协议有哪些?如何创建 HTTP/WebSocket/TCP/UDP/gRPC 等不同协议?
API 接口协议繁多,不同的协议有着不同的使用场景。70% 互联网应用开发者日常仅会接触到最通用的 HTTP 协议,相信大家希望了解更多其他协议的信息。我们今天会给大家介绍各种 API 接口主流协议和他们之间的关系。
API 接口主流协议有哪些?
接口协议分成两类:传输层协议和应用层协议。
传输层协议,是为应用层协议提供端到端的通信服务,负责数据的分段、传输、重组、流量控制、差错控制等功能。
其中,传输层协议主要有两种:TCP 和 UDP。
- TCP,是一种面向连接的、可靠的、有序的、基于字节流的协议。
- UDP,是一种无连接的、不可靠的、无序的、基于数据报的协议。
应用层协议,是为不同的应用场景定义了具体的数据格式、交互逻辑、功能实现等细节。
应用层协议有很多种:
另外,传输层协议和应用层协议在唯一标识上有明显的区别:
- 传输层协议使用端口号来标识不同的应用层协议,端口号是一个 16 位的整数,范围从 0 到 65535。
- 应用层协议使用 URI(统一资源标识符)来标识不同的资源,URI 是一个字符串,由协议名、主机名、路径名等组成。
API 接口主流协议之间的关系?
传输层协议和应用层协议之间有一个多对多的关系,即一个传输层协议可以支持多个应用层协议,也可以有多个传输层协议支持同一个应用层协议。例如,HTTP 可以使用 TCP 或 UDP 作为传输层协议,而 TCP 也可以支持 FTP、SMTP 等其他应用层协议。
而对于应用层协议 RPC,不同的互联网巨头会基于其使用的技术框架更进一步的提出标准更具体的衍生协议。
当前 API 接口管理产品对协议的支持对比
我们通常会根据不同的使用场景选用不同的接口协议。经常会有出现同一个业务流程需要调用不同协议的接口进行流程测试,特别是 HTTP 协议和其他协议的搭配。
这时候就需要考验我们所使用的 API 接口管理工具对接口协议支持的覆盖度,以下列举了部分 API 接口管理工具对协议的支持能力,供大家进行参考对比。
如何在 Apikit 中创建不同的协议
从上表可见,当前 Eolink Apikit 是市场上对多接口协议支持覆盖度最全的 API 管理工具,使用 Eolink Apikit 可减少频繁切换接口测试工具的风险。那么具体这些协议如何在 Eolink Apikit 中进行创建呢?下面我们将分别讲解。
1. HTTP/HTTPS、WebSocket/WebSockets
- 在 API 管理应用下的 API 菜单中,点击【+API】按钮;
- 在新建 API 页面中,选择所需的 HTTP、HTTPS、WS、或 WSS 协议即可。
2. TCP/UDP
- 在 API 管理应用下的 API 菜单中,点击【+API】按钮;
- 在新建 API 页面中,选择所需的 TCP 或 UDP 协议即可。
3. gRPC
- 在 API 管理应用下的 API 菜单中,点击【+API】旁的下拉菜单按钮;
- 选择导入 API 。
3. 选中 PROTO 文件类型;
4. 上传本地 PROTO 文件并点击【下一步】按提醒指引完成创建即可。
4. SOAP
- 在 API 管理应用下的 API 菜单中,点击【+API】旁的下拉菜单按钮;
- 选择导入 API 。
3. 选中 WSDL 文件类型;
4. 上传本地 WSDL 文件或引用在线 URL,并点击【下一步】按提醒指引完成创建即可。
5. Dubbo/HSF
- 在 API 管理应用下的 API 菜单中,点击【+API】按钮;
- 在新建 API 页面中,先选择 RPC 协议,再选择 HSF 或 DUBBO 即可。
写在最后
API 接口协议制定了接口信息的传递标准规范,不同的接口协议对接口管理工具来说都会拥有不同的底层功能逻辑。所以接口管理工具很难在短时间内完善的新增一种协议的文档管理和接口调试。
而 Eolink Apikit 从上线 7 年以来,一直不断的自研创新,解决了一个又一个多协议管理的难题,才最终脱颖而出成为市场上支持主流协议最全面的产品。而我们将继续保持初心,砥砺前行。继续做好国产自主 API 管理软件,在 API 管理领域上带来更多新的突破。
Apikit 自学日记: 如何创建/生成 API 文档
在 API 研发管理产品中,几乎所有的协作工作都是围绕着 API 文档进行的。
我们在接触了大量的客户后发现,采用 文档驱动 的协作模式会比先开发、后维护文档的方式更好,团队协作效率和产品质量都能得到提高。因此我们建议您尝试基于文档来进行工作,使用 文档驱动 方式来降低大量无意义的沟通成本。
当您创建了 API 文档之后,您可以随时查看 API 的改动情况、根据 API 文档发起 API 测试、编写 API 测试用例、使用 Mock API等。
如下图是在系统中管理的API文档,可以详细的看到API的描述信息、变更历史、测试用例、Mock API等内容。
创建API文档
在项目详情页点击左侧API文档功能,进入API管理页面,点击 添加 API,会进入 API 创建页面。
私有云产品比线上SaaS产品支持更多的API协议,比如Websocket、TCP、UDP、SOAP、HSF等。
编辑API文档
在API描述标签页中填写API的请求路径、API名称、标签、负责人等基本信息。
- API 状态:可以方便成员查看API当前所处的状态,并且进行状态流转的通知;
- Tag 标签:可以作为API的备注或者是筛选条件;
- 负责人:当API文档内容发生变化时,负责人会自动收到API变更通知。
API 请求参数
设置请求头部(request header)
您可以输入或导入请求头部。
批量导入的数据格式为 key : value ,一行一条 header 信息,如:
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json
Date: Mon, 30 Dec 2019 20:49:45 GMT
设置请求体(request body)
请求体提供了五种类型:
- Form-data(表单)
- Json
- XML
- Raw(自定义文本类型数据)
- Binary(字节流、文件参数)
对于Form-data(表单)、Json、XML等数据类型,可以通过引用事先编辑好的 数据结构 来快速填写内容。
设置 Query 参数
Query 参数指的是地址栏中跟在问号?后面的参数,如以下地址中的 user_name 参数:/user/login?user_name=jackliu
批量导入的数据格式为 ?key=value… ,通过&分隔多个参数,如:
api.eolinker.com/user/login?user_name=jackliu&user_password=hello
设置 REST 参数
REST 参数指的是地址栏被斜杠/分隔的参数,如以下地址中的使用大括号包裹起来的 user_name、user_password 参数:/user/login/{user_name}/{user_password}
注意,您只需要在URL中使用{}将REST参数括起来。API文档和测试时,下方表格的参数名不需要使用{}。
API 响应内容
设置响应头部(response header)
您可以输入或导入响应头部。批量导入的数据格式为 key : value ,一行一条 header 信息,如:
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json
Date: Mon, 30 Dec 2019 20:49:45 GMT
设置响应内容(response body)
响应内容的编写方式和请求参数的类似,响应内容提供了四种类型:
- Json
- XML
- Raw(自定义文本类型数据)
- Binary(字节流、文件参数)
对于 Json、XML 等数据类型,可以通过引用事先编辑好的 数据结构 来快速填写内容。系统也提供了导入功能方便您快速导入参数信息。
ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi
写在前面
最近在做一个app的时候发现需要写后台服务。所以,在考虑是使用webapi还是使用webserver来写这个后台服务的时候。爱纠结的我,最后还是选择了使用webapi来写这个后台服务。 原因有二
1.webapi 使用的是http的通讯协议想比于webserver soap通讯协议会更好。
2.webapi 是无状态的,所以,它会比webserver更轻量。
3.webapi 目前支持post,get,等http请求。
为了以后工作的需要,mark学习webapi的整个过程。废话不多说,来创建我们的第一个webapi程序吧。
创建webapi服务
1.首先,打开 vs 2013 选择文件-->新建-->项目。
2.选择 Visual C# Web -->选择ASP.NET Web 应用程序-->输入项目名称MyWebApi_01-->点击浏览(选择项目存放的地方)-->点击确定。
然后会弹出类似于这样选择的窗体
3.选择Empty-->Web Api-->确定。
就完成了创建一个新的web api 的后台应用程序服务了。
注意:现在的是一个空的应用程序。我们还需要做些简单的配置。才能正常的运行这个程序。
创建webapi控制器
1.首先,我们需要创建一个新的api控制器。
2.选择Controllers文件夹鼠标右键-->添加-->控制器
3.选择web api 2控制器-空-->添加
4.输入控制名称-->确定
5.完成一个控制器的添加
webapi 配置
1.打开App_Start文件夹-->WebApiConfig右键-->修改webapi路由
webapi 输出
打开Home控制器,编辑
[httpGet]
public IEnumerable<string> InputString(){
return new string[] { "hellow world" };
}
最后,在浏览器中输入请求的路由 api/home/InputString 。
输出hellow wolrd,证明整个web api 创建已经完成。
Elasticsearch 索引的操作,利用 kibana (如何创建 / 删除一个 es 的索引?)
我们已经通过索引一篇文档创建了一个新的索引 。这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射。现在我们需要对这个建立索引的过程做更多的控制:我们想要确保这个索引有数量适中的主分片,并且在我们索引任何数据 之前 ,分析器和映射已经被建立好。费话不多说,我们来看。
利用 Kibana 提供的 DevTools 来执行命令,要创建一个索引
put /sdb (其中 sdb 为一个索引)
创建成功后会返回如下结果
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "sdb"
}
如果你想禁止自动创建索引,你 可以通过在 config/elasticsearch.yml
的每个节点下添加下面的配置:
action.auto_create_index: false
上面我们创建好了一个索引,可以通过
GET /sdb 来查看
{
"sdb" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1552621484634",
"number_of_shards" : "5", //每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
"number_of_replicas" : "1", //每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
"uuid" : "PQ1TSt5hQOua_cUAegrYmw",
"version" : {
"created" : "6060299"
},
"provided_name" : "sdb"
}
}
}
}
如果想修改副本数,可以用 update-index-settings
API 动态修改副本数:
PUT /sdb/_settings
{
"number_of_replicas": 1
}
再次使用 GET /sdb 进行查看
上面我们说了如何创建一个索引,那么接下来我们来说说如何删除一个索引
DELETE /sdb
或者
DELETE /sd*
也可以一次性删除多个索引
DELETE /sdb,/sda
也可以删除全部索引
DELETE /_all 或者 DELETE /*
删除成功后会有以下提示:
{
"acknowledged" : true
}
一般来说这样删除太过随意,也太过危险,因此我们可以 elasticsearch.yml
做如下配置:
action.destructive_requires_name: true
这个设置使删除只限于特定名称指向的数据,而不允许通过指定 _all
或通配符来删除指定索引库。你同样可以通过 Cluster State API 动态的更新这个设置。
以上部分内容来自网络,有问题可以在下方评论,讨论技术问题可以私聊我。
今天关于如何创建 Swift 函数或类并传递一些变量和如何创建 swift 函数或类并传递一些变量数据的分享就到这里,希望大家有所收获,若想了解更多关于API 接口主流协议有哪些?如何创建 HTTP/WebSocket/TCP/UDP/gRPC 等不同协议?、Apikit 自学日记: 如何创建/生成 API 文档、ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi、Elasticsearch 索引的操作,利用 kibana (如何创建 / 删除一个 es 的索引?)等相关知识,可以在本站进行查询。
本文标签: