网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 服务器教程 > 什么是API接口,具体是什么意思?
商业源码 服务器教程 2024-01-14 18:29:01

什么是API接口,具体是什么意思?

什么是API接口,具体是什么意思?,第1张

作为软件应用而言,很多资源和数据不一定就是由其自身提供的,某些功能还是需要调用第三方提供的服务,这其中就涉及到API接口的调用。

什么是API接口?

API是指应用程序编程接口,我们通过API接口可以实现特定的功能,而不需要了解其内部实现细节。可以把API接口理解为是特定服务的一种封装,将服务封装起来提供给他人调用,这样一来很多功能不需要从新开发。

举个例子,我们想要知道一周天气如何,如果由自己来实现这个功能很难,因为天气数据只有气象部门才知道。那该如何知道天气信息呢?气象部分提供数据API给我们使用,我们只要输入地区就会知道该地区一周的天气情况,但我们并不需要了解这天气预报是如何实现的。

另外,不同系统和编程语言之间的数据通讯往往也采用API形式进行数据交接。

常见的API形式有哪些?

上面我们说到了,API其实就是一类服务的封装。我们可以使用不同的编程语言编写API,开发习惯和编程语言的不同导致API风格也存在差异。常见的API有以下几种形式:

1、HTTP类型接口

基于HTTP协议提供的API,这类API常常以“网址”形式提供的,像现在主流的RESTful就属于这类接口。

2、RPC接口

RPC它是指远程过程调用,将一部分代码逻辑放在远程服务器上部署,然后在需要的地方调用即可(调用远程方法就像调用本地方法一样),本质上是Client/Server模式,而且支持多种协议和数据传输方式。

3、WebService接口

WebService并不具象地指某种API,我们将以WEB形式提供的服务都称之为WebService,像RESTful也属于WebService。

magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。

1,引入magic-api-spring-boot-starter依赖

orgssssssss

magic-api-spring-boot-starter

171

2,applicationyml 中配置

magic-api:

#配置web页面入口

web: /magic/web

resource:

# location: /data/magic-api

type: database # 配置接口存储方式,这里选择存在数据库中

table-name: magic_api_file # 数据库中的表名

3,启动服务,访问magic-api web页面

http://127001:8035/magic-test/magic/web

1,RequestParam

GET http://localhost:9999/xxx/xxxname=abc&age=49

这样的URL参数magic-api 会自动将name和age映射为同名变量

2,表单参数

POST http://localhost:9999/xxx/xxx

name=abc&age=49

这样的表单参数magic-api 也会自动将name和age映射为同名变量。

3,Request Header参数获取

magic-api 会对所有RequestHeader统一封装为一个名为header的变量 如要获取 token 可以通过headertoken 来获取。

4,POST请求的Request Body参数获取

{

"name": "magic-api"

}

如要获取name属性 则可通过 bodyname 来获取

5,Path参数获取

主要是针对URL定义为http://localhost:9999/user/{id} 的类似接口

如要获取path路径上的id可通过pathid 或 id来获取

6,Cookie,Session参数获取

可以通过cookiexxx,sessionxxx来获取

1,#{} 注入参数,${} 拼接参数

作用和mybatis用法一致

id = #{id};

id=${id};

2,动态SQL参数

通过{condition,expression}来实现动态拼接SQL,如果条件成立则拼接后部分内容SQL中,与mybatis中的if标签基本一致

return dbselect("select from sys_user {id,where id = #{id}}");

相当于mybatis中的

3,Mybatis 语法支持

160以后的版本支持Mybatis语法

操作入口 dbtable('table_name')

1,insert

return dbtable('sys_user')insert({ user_name : '李富贵', role : 'admin'})

// insert into sys_user(user_name,role) values('李富贵','admin')

2,update

return dbtable('base_dict')primary('code')update({ code: 'insertTerst', name : '测试insert'})

//update base_dict set name = where code =

3,save

用法和insert相似

return dbtable('sys_user')primary('id', uuid())save({user_name: '李富贵'});

// insert into sys_user(id,user_name) values('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','李富贵');

4,select,page,where

return dbtable('sys_user')select()

return dbtable('sys_user')page()

return dbtable('sys_user')

where()

like('user_name','%李富贵%')

eq('role','admin')

select()

yml中配置分页参数

magic-api:

page-config:

size: size # 页大小的请求参数名称

page: page # 页码的请求参数名称

default-page: 1 # 未传页码时的默认首页

default-size: 10 # 未传页大小时的默认页大小

自动分页

使用yml中配置的分页参数

return dbpage("""select from base_dict_detail""")

手动分页

跳过前3条记录,然后取5条

return dbpage("""select from base_dict_detail""",5,3)

自定义分页参数获取

实现 PageProvider接口,复写getPage方法 {

public Page getPage(RuntimeContext runtimeContext) {

long page = 2;

long pageSize = 3;

return new Page(pageSize, (page - 1) pageSize);

}

此模式会覆盖yml的配置内容

目前内置了三种状态码,分别为 执行成功(1),参数验证失败(0),以及系统异常(-1)

自定义状态码

magic-api:

response-code-config:

success: 200 #执行成功的code值

invalid: 400 #参数验证未通过的code值

exception: 500 #执行出现异常的code值

默认返回格式

{

"code": 1, // 状态码

"message": "success", // 状态说明

"data": , // 返回的数据内容

"timestamp": 1629610503506, // 服务器时间

"executeTime": 1 // 执行时间

}

自定义返回格式

magic-api:

response: |- #配置JSON格式,格式为magic-script中的表达式

{

code: code,

message: message,

data,

timestamp,

requestTime,

executeTime,

}

自定义结构配置

实现ResultProvider接口,重写buildResult方法

引入swagger依赖

在yml文件中配置

magic-api:

swagger-config:

version: 100

description: magic测试文档

title: magic测试

name: 配置化实现

location: /v2/api-docs/magic-api/swagger2json

Magic-api通过springboot自动配置的方式配置了resource,dataSource,interceptor等内容。

在服务启动时,生成MagicConfiguration注入容器时,通过mappingHandlerMappingregisterAllMapping();来注册所有映射(即在界面上配置的接口请求地址和接口的实际处理类、方法的映射)。映射关系注册到handleMapping中,并在内存中通过ConcurrentHashMap来缓存映射关系

接口调用时,在DispatcherServlet中通过url去寻找handler,找到magic-api的统一处理RequestHandler以及处理方法invoke。

在invoke中根据请求方法和路径获取接口信息封装在ApiInfo中,然后进行参数的验证封装。实际脚本的执行,以及对返回结果的包装

这个根据公司的框架要求,正产的api接口每个公司的规定都不一样。比如说有些公司的请求数据是不需要加密的,通过api就可以调用获取,有些公司为了数据的安全性考虑是加密的,即使你获取到了请求不解密你还是无法读取正常的数据的,所以这个要根据公司的规范要求来,才能前后端通信,现在基本都前后端分离开发了,按照公司开发文档要求开发接口,前段根据接口文档进行参数解析映射,完成业务逻辑操作。

用Curl吧

$host = 'url';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $host);

// 返回结果

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

// 使用POST提交

curl_setopt($ch, CURLOPT_POST, 1);

// POST参数

$str = array('a=1','b=2','c=3');

curl_setopt($ch, CURLOPT_POSTFIELDS, $str);

// 结果

$res = curl_exec($ch);

curl_close($ch);

我们知道API其实就是应用程序编程接口,可以把它理解为是一种通道,用来和不同软件系统间进行通信,本质上它是预先定义的函数。API有很多种形式,最为常见的就是以HTTP协议来提供服务(如:RESTful),只要符合规范就可正常使用。现在各类企业在信息化这块都会用到第三方提供的API,也会提供API给第三方调用,因此设计API也是需要慎重的。

具体该如何开发设计一个良好的API接口呢?

明确功能

在设计之初就需要将API详细功能整理出来,按业务功能点或模块来划分,明确此API需要提供哪些功能。

代码逻辑清晰

保持代码整洁性,增加必要的注释,接口确保功能单一,如果一个接口需要复杂的业务逻辑,建议拆分成多个接口或者将功能独立封装成公共方法,避免接口里代码过多,不利于后期人员维护和后期迭代。

必要的安全校验机制

目前Web应用很容易遭遇数据窃取、篡改、非法提交、重复请求等安全问题,API的安全校验机制是必不可少的。常用解决方案就是采用数字签名形式,将每个HTTP请求都加上签名,服务器端校验签名合法性来保证请求是否合法。

日志记录

为便于及时定位问题,日志是必不可少的。

降低耦合度

一个良好的API应该是越简单越好,如果API间业务耦合度过高很容易因某块代码异常导致相关API的不可用,尽可能避免API间的复杂调用关系。

返回有意义的状态码

API返回数据中要携带状态码数据,比如200代表请求正常,500代表服务器内部错误等。返回通用的状态码有利于问题定位,比如可参考以下状态码:

开发文档

既然API是提供给第三方或内部使用的,那开发文档是必不可少的,否则他人不知道如何调用。一个良好的API开发文档应包含以下元素:

1、当前API架构模式讲解、开发工具及版本、系统依懒等环境信息;

2、当前API提供哪些功能;

3、API模块间的依懒关系;

4、调用规则、注意事项;

5、部署注意事项等。

一个好的API必然是易使用,易看懂,易扩展,难误用,安全性高,功能强大的API。要做到上面几点并不容易,但是我们应当遵从上述原则结合业务本身合理的划分设计API

接口 参数 功能 数据 状态
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 什么是API接口,具体是什么意思?

商业源码 钻石

分享到:
上一篇
如何正确设置dns?
下一篇
20台机小型网吧搭建无盘系统教程,从零开始!

相关推荐

现在应该怎么开发小程序?费用大概多少呢

现在应该怎么开发小程序?费用大概多少呢

如何制作自己的app软件

如何制作自己的app软件

金品 kh 2455 高性能服务器有哪些功能

金品 kh 2455 高性能服务器有哪些功能

服务器错误是什么原因

服务器错误是什么原因

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...