Api Example

以API接口开发为例,探索开发的最佳实践

分支列表

分支名称

说明

api-result-sample

api-result结合Spring Boot使用实例

默认启用端口

9191

功能

包结构规划最佳实践

API接口返回结果封装最佳解决方案

使用Swagger实现漂亮、简洁、大方API接口文档

Swagger添加请求头

RESTful API规范接口实例(2020.4.12)

Swagger添加接口认证

MySQL数据库操作实例

MongoDB操作实例

Redis操作实例

Kafka操作实例

RabbitMQ操作实例

Elasticsearch操作实例

项目目录结构

APIExample

├── src

│ ├── main

│ │ ├── java

│ │ │ └── com

│ │ │ └── fengwenyi

│ │ │ └── api_example

│ │ │ ├── bean

│ │ │ │ └── PageResultDataBean

│ │ │ ├── config

│ │ │ │ └── Swagger2Config

│ │ │ ├── controller

│ │ │ │ ├── ApiTestResultController

│ │ │ │ └── ApiUserController

│ │ │ ├── data

│ │ │ │ └── UserData

│ │ │ ├── entity

│ │ │ │ └── UserEntity

│ │ │ ├── exceptions

│ │ │ │ └── DataParseException

│ │ │ ├── handler

│ │ │ │ └── GlobalExceptionHandler

│ │ │ ├── util

│ │ │ │ ├── ApiResultUtils

│ │ │ │ ├── PageResultUtils

│ │ │ │ └── ResultUtils

│ │ │ ├── vo

│ │ │ │ └── param

│ │ │ │ ├── UserFilterParamVO

│ │ │ │ └── UserParamVO

│ │ │ └── ApiExampleApplication

│ │ └── resource

│ │ ├── application.yml

│ │ └── banner.txt

│ └── test

│ └── java

│ └── com

│ └── fengwenyi

│ └── api_example

│ └── ApiExampleApplicationTests

└── pom.xml

controller

business

service

依赖

默认错误页面

com.github.iutil

app-boot-starter

${app-boot-starter.version}

API接口结果处理解决方案

com.github.iutil

api-result

${api-result.version}

常用工具类

com.github.iutil

JavaLib

${JavaLib.version}

接口文档:Swagger

io.springfox

springfox-swagger2

2.9.2

io.springfox

springfox-swagger-ui

2.9.2

测试接口示例

控制台打印

[2019-06-05 10:17:02.516] api-test -> get

[2019-06-05 10:17:12.900] api-test -> add

[2019-06-05 10:17:24.037] api-test -> update

[2019-06-05 10:17:36.409] api-test -> delete

包结构

controller -> business -> service -> dbBusiness -> dbService

关于DB

dbService 只能由 dbBusiness调用

在 dbService 里处理所有与数据库相关的异常

查询由 find 开头

携带All:查询所有的数据

携带Use:查询没有被逻辑删除,且已经发布的数据

携带Normal:查询没有被逻辑删除的数据

RESTful API

HTTP动词

对于资源的具体操作类型,由HTTP动词表示。

常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

HEAD:获取资源的元数据。

OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

下面是一些例子。

GET /zoos:列出所有动物园

POST /zoos:新建一个动物园

GET /zoos/ID:获取某个指定动物园的信息

PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)

PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)

DELETE /zoos/ID:删除某个动物园

GET /zoos/ID/animals:列出某个指定动物园的所有动物

DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

过滤信息(Filtering)

如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。

下面是一些常见的参数。

?limit=10:指定返回记录的数量

?offset=10:指定返回记录的开始位置。

?page=2&per_page=100:指定第几页,以及每页的记录数。

?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。

?animal_type_id=1:指定筛选条件

参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。

错误处理

如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

{

error: "Invalid API key"

}

返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范。

GET /collection:返回资源对象的列表(数组)

GET /collection/resource:返回单个资源对象

POST /collection:返回新生成的资源对象

PUT /collection/resource:返回完整的资源对象

PATCH /collection/resource:返回完整的资源对象

DELETE /collection/resource:返回一个空文档

2020.5.11 规划

api-example

api-web

api-webfluex

api-swagger

版本

1.0.0 2021.01.21-

java接口api开发实例_APIExample相关推荐

  1. php 银行支付通道_PHP银联在线支付接口的开发实例

    本文主要和大家分享PHP银联在线支付接口的开发实例,希望能帮助到大家. 1. 登录银联自助化测试平台(登陆地址:open.unionpay.com),登录后,点击我的产品,如下:点击右方需要测试的接口 ...

  2. 淘宝客微信机器人接口API开发

    淘宝客微信机器人API接口,淘客机器人API,微信机器人API 微信二次开发完整API功能 需要文档的自取wkteam.gitbook.io 今天给大家介绍微信个人号自动回复机器人的二次开发!使用微信 ...

  3. java微信的客服接口开发,微信公众号 客服接口的开发实例详解

    微信平台更新之后,发现客服接口不错.研究了下 和大家分享下. 按照官方文档,是向客服接口发送规定的JSon 就可以了. 首先先封装下 JSon 的类: package com.lwz.wx.bean. ...

  4. Java基础学习总结(67)——Java接口API中使用数组的缺陷

    如果你发现在一个接口使用有如下定义方法: public String[] getParameters(); 那么你应该认真反思.数组不仅仅老式,而且我们有合理的理由避免暴露它们.在这篇文章中,我将试图 ...

  5. 淘宝接口API开发 taobao代购系统API接口调用

    本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164&is_promotion=1 ...

  6. 【转】淘宝接口API开发 taobao代购系统API接口调用

    此文章于 2017-05-03发布 本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164& ...

  7. java接口api封装_ElasticSearch java API 封装

    这是针对ES查询的一套封装. 因为时间有限仅仅能够支持一些简单查询,但能满足大部分开发需求. 同时也封装了对索引以及数据的CRUD.批量处理. public static void main(Stri ...

  8. 淘宝接口API开发-taobao代购系统API接口调用

    本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164&is_promotion=1 ...

  9. java 接口api设计的注意事项_Java接口设计原则

    类原则 1.单一职责原则 – Single Responsibility Principle(SRP) 就一个类而言,应该仅有一个引起它变化的原因. 职责即为"变化的原因". 2. ...

最新文章

  1. Linux下的buffer与cache
  2. 微信平台开发1--开发者模式基本配置
  3. Keras-常用代码
  4. js 用迭代器模式优雅的处理递归问题
  5. Ribbon的权重负载均衡策略
  6. 伺服驱动器cn1引脚定义_英威腾伺服
  7. Datawhale 零基础入门CV赛事-Task2 数据读取与数据扩增
  8. 改善代码设计 —— 处理概括关系(Dealing with Generalization)
  9. 前端路由和后端路由(浅聊)
  10. Linux 制作系统镜像
  11. 通过使用中国移动随e行客户端软件在电脑上发短信
  12. 苹果4s变php服务器,苹果4S改装无线充电
  13. 推荐几个正经网站,让你的数据结构和算法学习事半功倍!
  14. 一次心脏滴血漏洞的bug处理过程
  15. 读书笔记之——《谷歌和亚马逊如何做产品》
  16. CentOS7部署网盘网站
  17. 第1节 OSI7层模型与TCP-IP5层协议簇/栈
  18. html 填表模板,WEB前端开发简历自我评价填写样本
  19. Latex写论文时图片脚注的fig后冒号如何改为句号
  20. Simulink自动代码生成2——生成嵌入式代码(generating embedded code)

热门文章

  1. PyCharm找不到SSH interpreter
  2. Apache中RewriteCond规则参数介绍
  3. 评:国务院明确7大新兴产业发展重点
  4. 利用java实现数据库数据随机生成
  5. Bridged(桥接模式)
  6. Hopfield神经网络及其改进
  7. python元组和列表的联系_Python 基础【第五篇】元组和列表
  8. 注册twilio并用Python发短信(初次编辑2018/10,2019/9/1更新内容)
  9. 2021 RoboCom 复赛 7-2 拼题A打卡奖励(背包)
  10. 跟着我一起背NLP算法八股文_bert篇