如何开发api接口(如何开发api接口教程)

网友投稿 245 2023-02-05

本篇文章给大家谈谈如何开发api接口,以及如何开发api接口教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享如何开发api接口的知识,其中也会对如何开发api接口教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何开发自己的API接口?

开发自己的api需要准备几个工作:

第一:提高你的API的功能

第二:设置你的API访问协议如何开发api接口,如:socket,http

第三:升级你的API的认证方式,如:curl,oauth

第四:找到属于你的API开发语言

怎么写api接口

一些刚开始写接口文档的服务端同学,很容易按着代码的思路去编写接口文档,这让客户端同学或者是服务对接方技术人员经常吐槽,看不懂接口文档。这篇文章提供一个常规接口文档的编写方法,给大家参考。


推荐使用的是docway 写接口文档,方便保存和共享,支持导出PDF MARKDOWN,支持团队项目管理。

一、请求参数

1. 请求方法

GET

用于获取数据

POST

用于更新数据,可与PUT互换,语义上PUT支持幂等

PUT

用于新增数据,可与POST互换,语义上PUT支持幂等

DELETE

用于删除数据

其他

其他的请求方法在一般的接口中很少使用。如:PATCH HEAD OPTIONS

2. URL

url表示了接口的请求路径。路径中可以包含参数,称为地址参数,如**/user/{id}**,其中id作为一个参数。

3. HTTP Header

HTTP Header用于此次请求的基础信息,在接口文档中以K-V方式展示,其中Content-Type则是一个非常必要的header,它描述的请求体的数据类型。

常用的content-type:

application/x-www-form-urlencoded

请求参数使用“”符号连接。

application/json

内容为json格式

application/xml

内容为xml格式

multipart/form-data

内容为多个数据组成,有分隔符隔开

4. HTTP Body

描述http body,依赖于body中具体的数据类型。如果body中的数据是对象类型。则需要描述对象中字段的名称、类型、长度、不能为空、默认值、说明。以表格的方式来表达最好。

示例:

二、响应参数

1. 响应 HTTP Body

响应body同请求body一样,需要描述请清除数据的类型。

另外,如果服务会根据不同的http status code 返回不同的数据结构, 也需要针对不同的http status code对内容进行描述。

三、接口说明

说明接口的应用场景,特别的注意点,比如,接口是否幂等、处理是同步方式还是异步方式等。

四、示例

上个示例(重点都用红笔圈出来,记牢了):

五、接口工具

推荐使用的是http://docway.net(以前叫小幺鸡) 写接口文档,方便保存和共享,支持导出PDF MARKDOWN,支持团队项目管理。

magic-api 快速接口开发

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

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

magic-api-spring-boot-starter

1.7.1
2,application.yml 中配置

magic-api:

#配置web页面入口

web: /magic/web

resource:

# location: /data/magic-api

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

table-name: magic_api_file # 数据库中如何开发api接口的表名

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

magic-test/magic/web

1,RequestParam

GET http://localhost:9999/xxx/xxx?name=abcage=49

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

2,表单参数

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

name=abcage=49

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

3,Request Header参数获取

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

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

{

"name": "magic-api"

}

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

5,Path参数获取

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

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

6,Cookie,Session参数获取

可以通过cookie.xxx,session.xxx来获取

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

作用和mybatis用法一致

id = #{id};

id=${id};

2,动态SQL参数

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

return db.select("select * from sys_user ?{id,where id = #{id}}");

相当于mybatis中的

3,Mybatis 语法支持

1.6.0以后的版本支持Mybatis语法

操作入口 db.table('table_name')

1,insert

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

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

2,update

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

//update base_dict set name = ? where code = ?

3,save

用法和insert相似

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

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

4,select,page,where

return db.table('sys_user').select()

return db.table('sys_user').page()

return db.table('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 db.page("""select * from base_dict_detail""")

手动分页

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

return db.page("""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: 1.0.0

description: magic测试文档

title: magic测试

name: 配置化实现

location: /v2/api-docs/magic-api/swagger2.json

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

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

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

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

如何使用MixPHP来开发API接口

下面做一个开发 API 接口的简单实例:

从 articles 表,通过 id 获取一篇文章。

访问该接口的 URL:

1

http://www.e.com/articles/details?id=1

数据库表结构如下:

1

2

3

4

5

6

7

CREATE TABLE `articles` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) NOT NULL,

`content` varchar(255) NOT NULL,

`dateline` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第一步

修改数据库配置文件,MixPHP 的应用配置文件中,关于数据库的信息都引用了 common/config/database.php 文件。

第二步

修改应用配置文件:

修改 Response 组件默认输出格式为 JSON 格式。

修改 404/500 错误输出格式为 JSON 格式。

框架默认的 404/500 响应是网页,而 API 服务需要响应 JSON 数据,通常其他传统 MVC 框架需要修改很多地方才可完成这个需求,MixPHP 本身就提供该种配置,只需修改一下配置即可。

MixPHP 的默认 Web 应用中有两个配置文件,分别为:

main.php : 部署在 mix-httpd 时使用。

main_compatible.php :部署在 Apache/PHP-FPM 时使用。

开发 API 时我们推荐在 Apache/PHP-FPM 下开发,上线再部署至 mix-httpd 即可,反正是无缝切换的。

现在我们修改 response 键名下的 defaultFormat 键为 mix\http\Error::FORMAT_JSON,如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

   

// 响应

'response' = [

// 类路径

'class'         = 'mix\http\compatible\Response',

// 默认输出格式

'defaultFormat' = mix\http\Response::FORMAT_JSON,

// json

'json'          = [

// 类路径

'class' = 'mix\http\Json',

],

// jsonp

'jsonp'         = [

// 类路径

'class' = 'mix\http\Jsonp',

// callback键名

'name'  = 'callback',

],

// xml

'xml'           = [

// 类路径

'class' = 'mix\http\Xml',

],

],

   

然后修改 main_compatible.php 文件中 error 键名下的 format 键为 mix\http\Error::FORMAT_JSON,如下:

1

2

3

4

5

6

7

   

// 错误

'error'    = [

// 类路径

'class'  = 'mix\http\Error',

// 输出格式

'format' = mix\http\Error::FORMAT_JSON,

],

   

第三步

创建控制器:

1

   

apps/index/controllers/ArticlesController.php

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

   

<?php

namespace apps\index\controllers;

use mix\facades\Request;

use mix\http\Controller;

use apps\index\messages\ErrorCode;

use apps\index\models\ArticlesForm;

class ArticlesController extends Controller

{

public function actionDetails()

{

// 使用模型

$model             = new ArticlesForm();

$model-attributes = Request::get();

$model-setScenario('actionDetails');

if (!$model-validate()) {

return ['code' = ErrorCode::INVALID_PARAM];

}

// 获取数据

$data = $model-getDetails();

if (!$data) {

return ['code' = ErrorCode::ERROR_ID_UNFOUND];

}

// 响应

return ['code' = ErrorCode::SUCCESS, 'data' = $data];

}

}

   

创建错误码类:

1

   

apps/index/messages/ErrorCode.php

   

1

2

3

4

5

6

7

8

9

10

11

12

   

<?php

namespace apps\index\messages;

class ErrorCode

{

const SUCCESS = 0;

const INVALID_PARAM = 100001;

const ERROR_ID_UNFOUND = 200001;

}

   

创建表单验证模型:

1

   

apps/index/models/ArticlesForm.php

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

   

<?php

namespace apps\index\models;

use mix\validators\Validator;

use apps\common\models\ArticlesModel;

class ArticlesForm extends Validator

{

public $id;

// 规则

public function rules()

{

return [

'id' = ['integer', 'unsigned' = true, 'maxLength' = 10],

];

}

// 场景

public function scenarios()

{

return [

'actionDetails' = ['required' = ['id']],

];

}

// 获取详情

public function getDetails()

{

return (new ArticlesModel())-getRowById($this-id);

}

}

   

创建数据表模型:

1

   

apps/common/models/ArticlesModel.php

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

   

<?php

namespace apps\common\models;

use mix\facades\RDB;

class ArticlesModel

{

const TABLE = 'articles';

// 获取一行数据通过id

public function getRowById($id)

{

$sql = "SELECT * FROM `" . self::TABLE . "` WHERE id = :id";

$row = RDB::createCommand($sql)-bindParams([

'id' = $id,

])-queryOne();

return $row;

}

}

   

以上就是全部代码的编写。

如何开发api接口

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
API函数包含在Windows系统目录下的动态连接库文件中。Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。这在某种程度上很像Windows的天然代码。而其他的语言只是提供一种能自动而且更容易的访问API的方法。当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体,VB获取这个调用并经过分析后生成一个特定事件。
更易理解来说:Windows系统除了协调应用程序的执行、内存的分配、系统资源的管理外,同时他也是一个很大的服务中心。调用这个服务中心的各种服务(每一种服务就是一个函数)可以帮助应用程序达到开启视窗、描绘图形和使用周边设备等目的,由于这些函数服务的对象是应用程序,所以称之为Application Programming Interface,简称API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。
凡是在 Windows工作环境底下执行的应用程序,都可以调用Windows API。
linux API
在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。

php如何开发API接口

比如一个自定义函数:function test(){echo ‘hello world’;}就可以叫做 api。api 既可以是单个的函数,也可以是封装在类里的方法,当然它们也是程序代码。开发一个 api 的流程可以很简单,也可以很复杂,视具体的编程任务而决定,并没有特定的规则。比如,你需要为自己建立一个常用的函数库,命名为 my.lib.php然后把你自己编写的自定义函数,全部写在这个文件里面,那么,你就拥有了自己的api。开发的时候,只需要引入 my.lib.php,你就可以调用自己的 api 了。这是一个比较简单的例子。稍微复杂一点的,你可以把函数封装在类里面,方便继承和重用,还可以根据函数名称做一些程序设计,这个一句话说不清楚,给一个简单的例子吧:class mylib{function showmy(){echo ‘这是我的一个类方法’;}}调用的时候,先要实例化类,然后再调用方法。再复杂一点的就是使用类接口,区别就是接口里面定义的只是方法原型,而你需要通过具体的类来实现接口中的函数,具体请参考 php 手册 关于如何开发api接口和如何开发api接口教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 如何开发api接口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何开发api接口教程、如何开发api接口的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IntelliJ IDEA 2020常用配置设置大全(方便干活)
下一篇:详解shrio的认证(登录)过程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~