通用解决方案:API(接口)是什么

优采云 发布时间: 2022-11-03 11:37

  通用解决方案:API(接口)是什么

  什么是 API(接口)?举个常见的例子,在京东下单并付款后,商户选择顺丰快递发货,然后就可以在京东上实时查看当前物流信息。京东和顺丰作为两家独立的公司,可以在京东上实时看到顺丰的快递信息。这需要 API。在查看自己的快递信息时,京东可以使用顺丰提供的API接口进行实时检索。信息单独呈现网站。此外,您还可以在快递100上输入订单号查询快递信息。只要有合作或许可,其他公司可以通过顺丰提供的API接口检索快递信息。由于有多个调用,

  我们来看看百度是如何给出API的定义的:

  API(应用程序编程接口)是预定义的函数,旨在为应用程序和开发人员提供访问基于软件或硬件的一组例程的能力,而无需访问源代码或了解该机制的内部工作细节。

  从百度的定义来看,我们首先关注:功能,提供应用和开发者,无需访问源代码,例程。注意这四个短语。其中,例程是系统对外提供的功能接口或服务的集合。本文重点介绍API的数据服务功能接口。

  首先,在下面的文章中,我将首先演示如何使用浏览器,无需编程,无需访问源代码,调用免费的API接口,让您使用最简单的接口;

  然后,将演示如何通过编程调用接口;

  最后,演示启动WEB服务,编写一个简单的API接口来体现API的功能(y=f(x))。

  您也可以尝试复制代码。通过自己的实验,你会学到一些关于后端、前端的知识,加深你对 API 的理解。那么开始吧,我们先来一张图:通过API提供信息(数据)的功能,看看数据是如何流动的。如果您为 API 指定特定位置,它将位于下图的中心。

  为了改变理解,我穿插了一个故事人物。假设世界太大了,你想在非洲大陆看到它,成为一名水手,在一次航行中被一位著名的航海家带走(你有船上唯一的卫星计算机),你会不可避免地成为途中的领航员。它将让您确定下一个城市的纬度和经度。这时候导航器让你确定深圳的经纬度。

  1.你是个人肉API

  这时候,你可以想到一个简单的方法就是去百度搜索。除了领航员,船上的高级水手和大副很可能会问你。这时候你其实就是一个接口,大家来找你获取地理位置信息。作为一个接口,你自己不产生信息,你只是信息的采集器和传递者,提供人肉数据服务。

  2.使用免费的经纬API接口

  在百度搜索过程中,很多网友给出的经纬度不一致,要反复对比才能辨别真伪。时间长了,你可能会觉得大家都在问位置,太烦人了。我的人肉API效率太慢了。有没有更快的方法。

  这时候,你发现了一个阿里云的免费API接口:深圳。您在浏览器的地址栏中输入此 URL,即可获得正确的纬度和经度。你把网址里的深圳换成别的城市,就可以找到了。这时候,通过这个界面,就可以大大提高为大家确定位置的效率。

  3.您对此不满意

  你觉得这个接口很好,你就是懂Python,为什么不写点代码,注意这个时候你的角色变了:你已经从人类API变成了开发者(注意这是百度里的API定义关键词),你现在的目标是编写可以自动获取这个地方的经纬度的代码。

  #python

import requests

r = requests.get("http://gc.ditu.aliyun.com/geocoding?a=深圳")

loc = r.json()

print loc

#打印出的结果:{u'alevel': 4, u'lon': 114.05786, u'level': 2, u'cityName': u'', u'address': u'', u'lat': 22.54309}

# 与在浏览器输入地址的结果一致

print "深圳的经度是%s,纬度是%s" % (loc["lon"], loc["lat"])

#打印出的结果是:深圳的经度是114.05786,纬度是22.54309

  至此,我们来回顾一下百度对API的定义。目前,作为开发者,您只需编写几行代码即可访问“阿里巴巴云经纬度接口”。您无需访问此 API 的源代码,也无需了解此 API 是如何制作的。也就是说,无论是通过浏览器还是编程语言,您现在已经在使用简单的 API。

  4.使用简单的API接口后,进一步想知道它的内部机制是什么

  基于可以使用的知识,API的源代码及其内部机制是什么?目前可以调用经纬度API,单纯获取位置是不够的。你可能想自己写一个API接口,而不是紧紧地提供位置信息,同时添加对城市的介绍。

  使用 Python 的 tornado 模块构建 Web 服务。让我们创建一个脚本空文件 web_server.py 并将以下代码复制到其中

  # -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

import tornado.ioloop

import tornado.web

import json

import requests

lists = {u"深圳": "是经济特区,紧邻广州,接壤香港,人口约1200万",

u"青岛": "旅游城市,濒临黄海,特产啤酒,人口约920万"

}

def get_loc(city):

r = requests.get("http://gc.ditu.aliyun.com/geocoding?a=%s" % city.encode('UTF-8'))

<p>

loc = r.json()

return "经度是%s,纬度是%s" % (loc["lon"], loc["lat"])

class BaseHandler(tornado.web.RequestHandler):

def get_current_user(self):

return self.get_secure_cookie("user")

class MainHandler(BaseHandler):

def get(self):

if self.request.arguments.has_key("id"):

greeting = self.get_argument(&#39;id&#39;, &#39;Hello&#39;)

if greeting in lists:

self.write(greeting + ": " + str(get_loc(greeting)) + "," + str(lists[greeting]))

else:

self.write("none")

settings = dict(cookie_secret="P1/V61oETzdkLmGeJJFuYh7Eo5KXQAGaYgEQnp2XdTo=", debug=True)

application = tornado.web.Application([(r"/", MainHandler), ], **settings)

if __name__ == "__main__":

application.listen(8888)

tornado.ioloop.IOLoop.current().start()</p>

  执行web_server.py,执行后会启动一个web服务

  接下来我们在浏览器中输入192.168.199.204:8888/?id=Shenzhen

  注意我自己电脑的局域网IP是192.168.199.204,需要换成自己电脑(或者虚拟机)的ip。

  从上图中,我们实现了和“阿里巴巴云经纬度界面”一样的功能,得到了除了经纬度之外的城市的简要描述。随着航次越来越多,您让船上的每个人不仅了解地理信息,还了解每个城市的经济和文化状况。随着信息和数据的增加,特别需要能够先保存数据,使用时直接调用API的东西。

  5.数据存储,按需调整

  上面,我们模仿阿里云的API,搭建了一个Web服务,提供更详细的API地理位置信息服务。现在想想,我们代码里只有深圳和青岛两个城市,还有很多城市没有提到。此外,城市还有经济发展、饮食文化等。我们将深圳和青岛的城市信息存储到mysql中。

  保存后,我们直接从mysql中获取数据,通过API直接展示给浏览器。更改 web_server.py 脚本

  # -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding(&#39;utf-8&#39;)

import tornado.ioloop

import tornado.web

import json

import requests

import MySQLdb.constants

def get_mysql(sql_string):

conn = MySQLdb.connect(host=&#39;localhost&#39;, port = 3306, user = &#39;root&#39;, passwd = &#39;123456&#39;, db = &#39;test&#39;, charset = &#39;utf8&#39;)

cursor = conn.cursor()

cursor.execute(sql_string)

resultList = {}

for data in cursor.fetchall():

<p>

city_name = data[0]

city_introduce = data[1]

resultList[city_name] = city_introduce

return resultList

cursor.close()

conn1.close()

def get_loc(city):

r = requests.get("http://gc.ditu.aliyun.com/geocoding?a=%s" % city.encode(&#39;UTF-8&#39;))

loc = r.json()

return "经度是%s,纬度是%s" % (loc["lon"], loc["lat"])

class BaseHandler(tornado.web.RequestHandler):

def get_current_user(self):

return self.get_secure_cookie("user")

class MainHandler(BaseHandler):

def get(self):

if self.request.arguments.has_key("id"):

greeting = self.get_argument(&#39;id&#39;, &#39;Hello&#39;)

lists = get_mysql("select name,introduce from test.city where name =&#39;%s&#39; " % greeting.encode(&#39;UTF-8&#39;)) #直接从mysql里读取城市信息,特别注意这里的SQL

if greeting in lists:

self.write(greeting + ": " + str(get_loc(greeting)) + "," + str(lists[greeting]))

else:

self.write("none")

settings = dict(cookie_secret="P1/V61oETzdkLmGeJJFuYh7Eo5KXQAGaYgEQnp2XdTo=", debug=True)

application = tornado.web.Application([(r"/", MainHandler), ], **settings)

if __name__ == "__main__":

application.listen(8888)

tornado.ioloop.IOLoop.current().start()

</p>

  保存web_server.py后,再次执行重启,在浏览器地址输入192.168.199.204:8888/?id=Shenzhen,出现与步骤4相同的结果,不过这次是从mysql中取数据,通过API显示界面浏览器。至此,你不仅会用到API,还会通过tornado打开web服务,打开一个API查询接口。

  最后,总结一下,从上面的文章,我先画了一张图,结合数据流向,描述了API的位置,然后用了一个信息采集器的故事,如何使用现有的接口,去提供更好的界面。当然,这太简单了。但我认为它也可以解释 API 的基本含义。生产环境中API的复杂性涉及数据复杂性、接口稳定性、高可用性和安全性。

  (本文结束,如有疑问请留言)

  推荐链接:

  1.知乎上API的答案

  /question/38594466/answer/228418422

  /question/38594466/answer/215257117

  API的作用:

  - 对于软件提供者,可以留出API供其他应用调用,形成生态系统,让软件发挥最大价值,变得更有生命力。(同时其他人看不到代码,不伤商业机密。)(可以顺丰京东为例)

  - 对于应用开发者来说,通过开放的API,可以直接调用多家公司制作的功能,制作自己的应用,无需自己动手,节省能源。

  /question/21691705/answer/26406216

  API(应用程序编程接口)

  翻译成中文是“应用程序接口”,其实这个翻译不好,应该说是“程序通信接口”。

  翻译成接口,顾名思义,就是用来沟通两种不同的东西,通常由一组函数库组成。

  同一平台下的两个不同的事物(程序或系统),为了访问彼此的功能等,

  因此,一个 X 程序编写了一组函数,以允许同一平台上的其他程序访问该 X 程序的函数。

  那套函数可以说是X程序对外开放的API。

  整套解决方案:wangmarket: 网市场云建站系统

  方法二:使用serverless版本快速做网站(建议先试试这个方法,毕竟不用花钱买服务器)

  做网站,不用买服务器,一年几毛钱的流量费和html文件存储费。对于只做一个或几个网站的朋友,这是首选,强烈推荐。毕竟只是做几个网站,谁愿意承担增加一台服务器的费用。

  下载链接:

  方法三:上线,华为云服务器,花1元快速部署上线使用

  根据本站开户、选台服务器,在线部署和使用网市云建站系统仅需一元,无需其他额外费用!

  (这个版本可能是5.2的镜像,有点旧,但是正常使用没问题,建议参与以下活动,我们会帮你安装最新版本)

  方式四:自定义部署,比如部署到私服、阿里云、腾讯云等(这种方式用得最多)

  参考:

  如果您要部署到服务器,建议您这样做。

  配套软件:Pa网站工具、模板计算工具

  看哪个网站,拉出来做个模板。我看到的 网站 可以被我使用!/mail_osc/templatespider

  系统二次开发目前使用的开源框架介绍

  SpringBoot2.6.1、Shiro、Redis5、Mysql5.7(必须是这个版本)、ElasticSearch 7.10.1、

  前端信息提示msg.js,客服代理kefu.js,网站管理后台Layui

  开发前注意事项

  用Java开发,有两种数据库,默认使用sqlite 3,也可以配置使用mysql。

  

  一定要注意版本号不要写错,jdk1.8和mysql用的是5.7,重要的事情说三遍

  另外,请使用 Eclipse 进行开发。我们从来没有使用过idea。如果idea出现异常,可以自行百度搜索解决方法,因为idea还有其他的朋友,很多都可以正常运行,但是我们没用过idea。如果您有想法 如果出现问题,我们将无法提供任何帮助。

  以下是一些入门步骤:

  本地环境和git导入项目配置Mysql数据库(可选,不做这一步完全可以运行) 代码起来后,通过安装向导,安装系统三分钟导入模板快速创建自己的网站

  从网市云建站系统v5.0版本中,我们提取了网市云建站系统底层基础支持,如常用工具、权限控制等,并调整打包了一套集成开发框架。叫它wm。也就是说,在网上市场搭建云站点的基本操作都收录在wm文档中。wm的基础开发文档包括数据库操作、文件操作、日志操作、短信发送、ajax请求等最基本的功能模块。通过它,软件系的应届毕业生可以在一个月内快速进入开发状态,具备项目开发能力。点击这里查看wm开发文档

  当前目录结构

  wangmarket 项目

├─src 项目源代码 ( Maven )

├─pom.xml 项目源代码 pom ( Maven )

├─else 其他的杂七杂八相关文件,一般用不到

│ ├─wangmarket.sql 项目运行所需要的数据库文件( Mysql数据库,默认sqlite3)

└─README.md 说明

  进行二次开发

  在二次开发过程中,我们不建议您直接在本项目中进行更改,否则您将失去跟随我们版本升级的能力。众所周知的织梦cms也被称为安全漏洞,因为版本未升级而失去维护。

  我们建议您可以扩展这个项目,开发您想要的模块和功能,以及一些原创功能和页面更改。例如,登陆页面的重写。

  当我们市场有新版本时,只需直接更新WEB-INF/lib/wangmarket-xxx.jar即可完成版本升级

  

  云模板库

  您的时间非常宝贵!它不会让你一接触就学会自己制作模板。我们自带云模板库,点击查看

  虽然模板不多,只有几百套,但创建网站后一键导入,直接使用!一键导入后,会自动创建栏目和页面。您只需要更改栏目名称,更改文字和图片,即可达到成本网站交付标准!作为一个早期的你,这足以服务客户并熟悉整个系统!另外,我们模板库的模板会不断增加。你看到的任何 网站 都可以被我使用 - 无限模板计划

  项目经验

  网市云建站系统,2009年开始使用php开发wap系统建站。用java重构后,2010年底发布了第一版Java版建站系统。历经十余年不断更新迭代,功能完善...

  活动,免费帮助安装+调试/发送授权/发送代理

  微信扫码关注公众号,花10分钟参与提示活动,即可换取我们在安装、调试、授权、代理等方面的帮助。

  作者的话

  我们支持白人卖淫,但我们不想做无意义的卖淫!很多工作室和小微公司想要生存下来,赚到一些钱,实属不易。在资本积累方面,如果你购买牌照,你显然会有很大的负担。如果您属于该领域,建议您参与我们的活动并关注微信公众号。“wangmarket”可以看到活动,不花钱用我们的开源很不容易,还得赚钱养家糊口。我们的精力真的很有限,所以我们只能把时间花在真正想用它的朋友身上。如果你能花10分钟参加活动,不管你能不能用,至少你有一个想法,愿意投入一点点去做,我们也愿意帮助您。联系微信:xnx3com

  常见问题-Q&amp;A 安装后只有一个网站,或者有代理后台可以打开多个网站

  安装功能齐全,包括代理后端。这样安装之后,其实就是你自己私有部署的一个SAAS云建站系统。代理后台的使用请参考:

  可以一键生成html网页吗?或伪静态

  是一键生成的html网页,是真静态,不是伪静态

  网站 如何与手机匹配?

  在我们模板库的数百个模板中,大部分模板都支持手机和电脑同时访问。其实这个问题与我们的建站系统无关。如何适配手机取决于你制作的模板中CSS样式是怎么写的,是否响应式适配手机。

  其他【帮助文档、系统使用帮助说明】()模板文档、模板开发说明、模板标签

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线