• [热门活动] 专享体验才更爽!华为云推出专享版API网关,等你来pick
    华为云API网关 按需计费只需 4. 78元/小时,点击了解:https://www.huaweicloud.com/product/apig.html相信在使用华为云API网关的小伙伴最近会惊奇的发现API网关的控制台多出了一个专享版的页签并且大大的"购买专享版"也在提醒用户,API网关又出新功能啦~~ 然而,惊喜的同时,正在看本文的小伙伴一定是满肚子疑问专享版API网关是什么?有什么用?共享版的API网关用的好好的,为什么要费时费力的用专享版的API网关?为了解答用户的疑问,首先小编想问问大家,下面这些尴尬的场景,你遇到过吗? 开车没有专属停车位,绕“场”三匝,何“位”可依!洗澡没有专属淋浴间,和隔壁“坦诚相对”,只剩尴尬!挤高峰地铁没有专属座位,灭霸爸爸打响指都挤不进去! 想要避免这些尴尬,一劳永逸的办法当然是能够拥有属于自己的专属的淋浴间、停车位、交通工具可见,无论哪种场景下,我们都想获得一种归属感和安全感。 ------这里是回归正题的分割线------- 说了这么多有的没的,目的就是告诉读者,专享版和共享版API网关的本质区别就在于,是否能够让用户获得归属感和安全感。专享版API网关的三大优势:1、计算和网络带宽资源独占,物理级隔离,安全性更高,实现真正意义上的资源完全隔离,性能也更加稳定。2、专享版可以自定义绑定EIP,支持配置更大的公网网络带宽,构建API调用的“高速公路”。3、支持多种方式调用后端服务,无需通过创建VPC通道,直接通过私网ip即可访问后端,更加灵活。看到这里的小伙伴是不是觉得,也不过如此,那小编告诉你图样图森破 后续华为云的工程师小哥哥和小姐姐们还会推出以下特性:1、专享版提供多种套餐规格,按照您的业务量规划,为您量身打造合适的带宽跟性能套餐,支持在线扩容2、提供包周期的计费模式3、支持复杂的API编排,通过API网关引入编排层,通过编排层以一种更具体的方式处理数据元素或者特性,从而为某个目标开发者或应用做准备 专享版API网关不需要复杂的规则和计算公式,不需要各路数学大神相助。按需计费模式购买专享版API网关只要 4. 78元/小时马上点击这里了解/抢购API网关吧!
  • 5分钟APIG实战| 使用Rust语言快速构建API能力开放
    文档内容快速浏览:1 序言:Rust语言简介   1.1 核心概念:所有权系统2 使用Rust进行HTTP Web后端应用开发   2.1 实战演练         2.1.1 准备后端应用服务器         2.1.1 安装相关的工具链         2.1.2 编写后端Web应用   2.2 API部署1 序言:Rust语言简介参与过C/C++大型项目的同学可能都经历过因为Null Pointer、Memory Leak等问题“被” 加班了不知道多少个晚上。别沮丧,你不是一个人,Mozilla Firefox的开发者们同样经历过这个问题。浏览器可以说是我们日常使用最为频繁的软件了,目前主流的浏览器主要 有Google Chrome、Internet Explorer、Mozilla Firefox。为了提升用户体验,Mozilla就已经启动了多线程渲染的计划。然而,面对大型的C/C++工程,Mozilla的开发者们也坚持不住了。此时,Rust进入了开发者的眼中,与C语言ABI兼容、多编程范式支持、无GC及独特的所有权系统,使得Mozilla与Rust语言一拍即合,并迅速启动了 Mozilla 的下一代浏览器引擎项目:servo,到目前为止(2018年8 月),servo已经成为了除Rust编译器自身外,社区中最大的Rust项目。servo目前已经部 分应用在Firefox 57之后的版本中。Rust语言的设计目标是安全、高效、并发以及实用性。Rust 从一定程度上解决了C++的以 下痛点:1.  容器/数组越界访问;2.  动态内存分配的泄露与double free问题;3.  难以对依赖进行管理;其中前两点在C/C++项目中是最容易引发Bug以及安全问题的原因,依靠人来对这些问题进行检查往往不是最佳的解决方案。Rust通过其独特的所有权系统,简化所研究的对象,使得一些隐晦的问题在编译期间便暴露出来。任何事情都是有两面性的,由于严格的编译期检查以及工程实现上的取舍,Rust在一定程度上牺牲了编译速度以及灵活性,对“灵活性”的舍弃并不代表Rust语言的表现力下降,只是我们在编写Rust程序时,可能需要 改变一下以往的思路。在Rust圈子中,有一句调侃:“C++是调试的时候想撞墙,而Rust是编译的时候想撞墙”。接下来我们将通过一个简单的例子来建立Rust中所有权系统的一个基本印象。1.1 核心概念:所有权系统Rust 的所有权系统包括三个核心概念:所有权、借用以及生命周期。我们首先来通过一个 简单的例子来建立对所有权以及生命周期的直观概念。#[derive(Debug)]  struct Foo;    fn main() {      let foo = Foo; // Note: Foo not implement Copy trait      let bar = foo;        println!("{:?}", bar);      // println!("{:?}", foo);  }首先创建了一个Foo类型的变量foo,然后我们执行let bar = foo;,然后我们尝试 输出这两个变量的值,如果我们将第9行的注释去掉,程序将无法通过编译,这是因为在 Rust中,对于没有实现Copy trait的类型,如果我们将一个绑定赋给另一个绑定,默认 使用的是move语义,也即对于任意给定的资源,当且仅当有一个变量绑定与之对应。想要进一步学习Rust的小哥哥小姐姐,可以参考Rust Learning。2 使用Rust进行HTTP Web后端应用开发在Rust生态中进行HTTP Web后端应用开发目前主要依赖两个基础库:http 以及hyper,其中 http 提供HTTP标准相关的基础类型,如Request<T> 、Response<T>以及StatusCode和常用的Header等;hyper的定位是一个高效、准确的 HTTP底层库,它封装了HTTP的报文解析、报文编码处理、连接控制等内容,对于用户而言 只需要实现一个类似于Fn(Request) -> Response的映射,就可以完成HTTP Web服务端的开 发。基于http以及hyper,社区中还有很多用于Web应用开发的框架,常用的有:•  rocket•  iron• actix-web•  tower-web值得一提的是上周刚发布的tower-web,因为这是官方net团队2018年工作计划的一部分, 这个库在未来会为Rust生态提供一个灵活、高效、易于使用的Web开发框架。那么事不宜迟, 我们通过实战演练来一睹为快。 在本月月底,tower-web将会集成到warp项目中,成为warp框架的一部分,开发的重心将会转移到warp上。2.1 实战演练2.1.1 准备后端应用服务器登录华为云,并创建弹性云服务器作为我们的后端应用服务器。实战中使用的系统版本为Ubuntu 16.04,如果选择不同的系统需要根据情况调整命令。2.1.2 安装相关的工具链apt update && apt install build-essential# 安装Rust工具链curl https://sh.rustup.rs -sSf | sh这一步结束后,我们就可以开始编写我们的应用服务了。2.1.3 编写后端Web应用这次分享我们来构建一个RESTful中文分词API。1. 首先我们来创建一个Rust工程 cargo new --bin chinese_segmentation2. 接下来在Cargo.toml中添加相关依赖。[dependencies]  tower-web = "0.2"  # Jieba Chinese Work Segmentation  jieba-rs = "0.2"    # logging utils  log = "0.4.0"  env_logger = "0.5.12"    # Serializing responses, deserializing requests  serde = "1.0.70"3. 然后是我们的main.rs,与其他语言一样,在文件开始的部分引入外部依赖以及相关声明:extern crate jieba_rs;  #[macro_use]  extern crate tower_web;    #[macro_use]  extern crate log;  extern crate env_logger;    use std::iter::FromIterator;  use std::collections::HashSet;    use jieba_rs::Jieba;  use tower_web::ServiceBuilder;4. 接下来我们定义我们的服务资源ChineseTokenizer:#[derive(Debug)]  struct ChineseTokenizer {      inner: Jieba,  }    impl ChineseTokenizer {      pub fn new() -> ChineseTokenizer {          ChineseTokenizer { inner: Jieba::new() }      }        //对传入的字符串进行分词,并返回一个字符串向量      pub fn cut(&self, text: &String) -> Vec<String> {          let words = self.inner.cut(&text, true)              .into_iter()              .map(|word| word.to_owned())              .collect::<HashSet<String>>();            let mut words = Vec::from_iter(words.into_iter());            //由于使用HashSet进行去重会引入不确定性,               //因此对结果进行重排,使输出的结果有序。          words.sort();          words      }  }5. 定义了我们的服务资源后,我们来定义输入Web API的输入输出类型:#[derive(Debug, Extract)]  struct TokenizeRequest {      text: String  }    #[derive(Debug, Response)]  #[web(status = "200")] //当handler返回Ok(xx)时,返回200状态码  struct TokenizeResponse {      words: Vec<String>,  }6. 到目前为止,我们已经有了我们的服务资源,输入输出类型,接下来就到我们的重头戏了, Web 部分的实现,别担心,因为真的很简单。impl_web! {      impl ChineseTokenizer {          #[post("/tokenize")]          #[content_type("application/json")]          fn tokenize(&self, body: TokenizeRequest) -> Reqult<TokenizeResponse, ()> {              Ok(TokenizeResponse {                  words: self.cut(&body.text),              })          }      }  }7. 最后是我们的main函数:fn main() {      //初始化Logger      env_logger::init();      let addr = "0.0.0.0:8081".parse().expect("invalid address");      info!("listening on http://{}", addr);        ServiceBuilder::new()          .resource(ChineseTokenizer::new()) //注册我们的服务资源          .run(&addr)             //让我们的服务跑起来          .unwrap();  }8. 现在,我们通过命令RUST_LOG=chinese_segmentation=info cargo run --release来检验 一下我们的成果了。  服务在本地跑起来之后,我们可以通过命令 curl -H "Content-Type: application/json" -X POST -d '{"text":"中间件小哥"}' <url> 来测试一下我们的接口。  本地测试通过之后,就需要着手开始部署了,我们检查一下弹性云服务器的安全组的入方向 是否放开8081端口。2.2 API 部署API 网关集成了监控、流控、负载均衡等一系列功能,为开发者提供高性能、高可用的API 托管服务,在本次实践中,我们将我们的API部署在API网关中。1. 登录华为云API网关服务,选择“新建API”。    2. 填写API的基本信息  在本次实验中,选择无认证。      3. 定义API请求。  请求路径填为 /segment,方法为 POST      4.   定义后端服务。  请求方式设置为POST,在VPC通道这一项中,我们需要新建VPC通道。端口设置为8081, 并将其与弹性云服务器关联。      6. 创建完VPC通道后,回到API创建页面,填入相关信息:     7. 网关创建完成后,我们需要回到我们的弹性云服务器,将我们的后端服务器先跑起来:     RUST_LOG=chinese_segmentation=info nohup ./target/release/chinese_segmentation 2>&1 ~/api.log &  作为示例,这里使用nohup命令来跑我们的服务。但在生产环境中,建议使用 systemd等工具来跑服务。8. 服务在云服务器运行起来之后,将API发布至RELEASE环境中。     然后我们就可以和我们的API愉快地玩耍啦。 欢迎扫码查看更多精彩: 
  • [介绍/入门] API网关体验demo新上线,快来Get新技能吧!
    体验demo链接:https://console.huaweicloud.com/apig/#/apig/expdemo以“电话号码归属地查询”为例,一键式体验demo,一分钟内完成API的开放,有图有真相。1、开始“体验Demo”,后台自动完成API的开放。2、调试API,查看返回结果。3、通过浏览器调用API,查询电话号码的归属地。  通过以下界面查看体验demo创建的API分组详情、API调用情况、修改流控策略方法:查看体验demo创建的API分组详情: 查看体验demo创建的API调用情况(请求次数、调用延迟时间、调用错误次数):修改体验demo创建的流控信息:如果想要了解更多功能,请参见《API网关 用户指南》。
总条数:63 到第
上滑加载中