Agenda

  • 什么是API
  • 为什么使用API开发
  • API开发中几个关键点
  • GO适合开发API

API-Centric的好处

  • 服务多个终端
  • 标准化 对内对外都能实现同一标准(http+json/xml)
  • 适合团队协作
  • 代码清晰,结构胡,可维护性强
  • 安全性, 可利用认证系统做做API的安全
  • 去中心化,易拓展,API无状态变化,方便进行拓展
  • 实现模块化,实现最小化的API之后,可通过组合又可以拼接成新API
  • 可以快速将内部API开放

API 的典型部署方案

RUNOOB 图标

API 关键点

  • 运行速度快
  • 开发效率高
  • 运行稳定

GO的主要特点

  • 语法简单
  • 类型安全和内存安全
  • 以非常直观和极低的代价方案实现高并发
  • 高效的垃圾回收机制
  • 快速编译
  • 为多核计算机提供性能提升的解决方案
  • 跨平台编译
  • 集成工具丰富,例gofmt、godoc

GO 并发编程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
urls := []string{"http://www.google.com.hk/", "http://cn.bing.com/"}
start := time.Now()
done := make(chan string)
for _, u := range urls {
go func(u string) {
resp, err := http.Get(u)
if err != nil {
done <- u + " " + err.Error()
} else {
done <- u + " " + resp.Status
}
}(u)
}
for _ = range urls {
fmt.Println(<-done, time.Since(start))
}
}

API 开发关注点

  • 并发处理 —- go并发
  • http处理 —- http内置包
  • 数据操作 —- io/os/strings/strconv/sql 包
  • XML/JSON 处理 —- json/xml 包
  • 日志处理 —- log 包
  • 用户认证 —- oauth/ oauth2/ basic/ Digest authentication
  • 数据加密 —- aes/ dec/ md5/ hash/ sha1等包

Beego执行逻辑

RUNOOB 图标


Copyright © Ywnline 版权所有 冀ICP备20005992号-1