API接口:

API接口是什么?

API全称是:Application Programming Interface,即:应用程序接口。开发人员可以使用这些API接口进行编程开发,而又无需访问源码,或理解内部工作机制的细节。

比较常见的现实场景是,在开发安卓应用时需要使用到安卓系统提供的API,在进行Windows桌面应用开发时需要用到微软系统提供的API,在进行微信小程序开发时可使用微信开放接口API。

更为常见的是,API接口很可能是远程的服务端API,其背后采用Java、PHP、C#、Pyhon、C/C++、Ruby、Scala等一种或多种后端语言开发搭建,提供了数据存储、通讯、各类服务等功能。一般是使用HTTP协议进行通讯,使用JSON格式序列化返回接口结果和数据。

android api文档接口 安卓api接口_api

 

API接口的地位与作用

API接口是项目开发过程中必要的组成部分之一,是客户端应用与服务端应用通信和桥梁。

除此之外,从专业角度来说,API不仅代表着接口本身,还蕴含了服务端的整体系统架构、数据存储、服务端管理、第三方系统的整合等,只是对外看来,表现出来的是API接口。

可以说,API接口直接使用方是客户端应用,地位是客户端与服务端之间的通信桥梁,是信息化的桥梁,所担负的作用是把业务功能通过接口服务形式具体化,为应用编程开发提供技术支持。

开放API的方式:Django,Flask,Tornado,FastAPI

  1. Django:

主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架。

优点:

大和全(重量级框架)

自带orm,template,view

需要的功能也可以去找第三方的app

注重高效开发

全自动化的管理后台(只需要使用起ORM,做简单的定义,就能自动生成数据库结构,全功能的管理后台)

session功能

缺点:

template不怎么好用(来自自身的缺点)

数据库用nosql不方便(来自自身的缺点)

如果功能不多,容易臃肿

  1. Tornado:

主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架。

优点:

少而精(轻量级框架)

注重性能优越,速度快

解决高并发(请求处理是基于回调的非阻塞调用)

异步非阻塞

websockets 长连接

内嵌了HTTP服务器

单线程的异步网络程序,默认启动时根据CPU数量运行多个实例;利用CPU多核的优势

自定义模块

缺点:

模板和数据库部分有很多第三方的模块可供选择,这样不利于封装为一个功能模块

  1. Flask:

主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架

优点:

简单,Flask的路由以及路由函数由修饰器设定,开发人员不需要借助其他文件匹配;

配置灵活,有多种方法配置,不同环境的配置也非常方便;环境部署简单,Flask运行不需要借助其他任何软件,只需要安装了Python的IDE,在命令行运行即可。只需要在Python中导入相应包即可满足所有需求;

入门简单,通过官方指南便可以清楚的了解Flask的运行流程;

低耦合,Flask可以兼容多种数据库、模板。

缺点:

对于大型网站开发,需要设计路由映射的规则,否则导致代码混乱。

压测结果:同为5秒1000并发量,Jmeter

Flask:

android api文档接口 安卓api接口_api_02

 Django:1秒500

android api文档接口 安卓api接口_android api文档接口_03

FastAPI:

android api文档接口 安卓api接口_API_04

 Torando:

android api文档接口 安卓api接口_android api文档接口_05

 

学习目标:Flask,Tornado

Flask:flask 中的request - 小白°

Tornado:

Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月开源软件。

特点:

  1. 作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其拥有异步非阻塞IO的处理方式。
  2. 作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%。性能: Tornado有着优异的性能。

1. tornado.web

tornado的基础web框架模块

RequestHandlertornado.web.RequestHandler:处理请求

封装了对应一个请求的所有信息和方法,write(响应信息)就是写响应信息的一个方法;对应每一种http请求方式(get、post等),把对应的处理逻辑写进同名的成员方法中(如对应get请求方式,就将对应的处理逻辑写在get()方法中),当没有对应请求方式的成员方法时,会返回“405: Method Not Allowed”错误。

Application

Tornado Web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表;其listen(端口)方法用来创建一个http服务器实例,并绑定到给定端口(注意:此时服务器并未开启监听)。

tornado.web.Application.listen()(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,我们能不能自己动手来实现这一部分功能?

Httpserver

tornado.httpserver模块,它就是tornado的HTTP服务器实现。然后直接 .listen()

get_argument方法的原型:self.get_argument(name, default=ARG_DEFAULT, strip=True)

name:从get请求参数字符串中返回指定参数的值。如果出现多个同名参数,这个方法会返回最后一个值。

default:设置未传的name参数的默认值。如果name未传,default也未设置,会抛出tornado.web.MissingArgument异常

strip:表示是否过滤掉参数值的左右空白字符,默认为True。通常情况下不需要空格字符,但是在搜索等情况下需要空格。

Tornado开发API接口流程:

  1. 自定义一个类,类中传入请求
  2. 定义方法,get或者post方法
  3. 从get或者post方法中获取参数
  4. 传入自己项目的方法中
  5. 返回的结果self.write(),返回相应信息
  6. 开启tornado服务:tornado.options.parse_command_line()
  7. http_server = tornado.httpserver.HTTPServer(app)
    8. 启动监听:http_server.listen(端口号),7,8两步可以合并到一步写成app.listen()
    9. 启动当前线程的IOLoop:tornado.ioloop.IOLoop.instance().start()