美文网首页
0226 rest接口设计

0226 rest接口设计

作者: 李福春carter | 来源:发表于2020-02-27 12:06 被阅读0次

image.png

背景

为了更方便的书写和阐述问题,文章中按照第一人称的角度书写。作为一个以java为主要开发语言的工程师,我所描述的都是java相关的编码和设计。

工程师的静态输出就是代码和文档,动态的就是各种应用程序(app,h5站点,微信公众号,小程序)。动态的先不讨论,主要讨论静态的。
随意查看一个代码库,可以看到代码的编写过程,某些代码可能在现在看来实现很低效和可笑,但是在当时的技术和时间场景下,肯定是最优的输出。
也可以在gitlab上看看每次的pull request ,看看当时对这些代码的codeReview ;
反馈出的问题就是程序的设计非常重要。而接口是功能的抽象,相对比较稳定,对团队来说影响比较大。

**

API设计原则


先给接口来个简单的定义:即协议,约定了请求和响应的参数和格式。

接口设计要求是:<br />1.简洁;<br />2.考虑到向后兼容;

业界有一些基本的原则:

1 restfull

restfull是一种设计风格,一切接口皆是资源。<br />
<br />目前是设计的主流,思想也非常先进。<br />

2 参数结构化

请求和响应中的参数要结构化,好处是易读易用。

3 安全

<br />这个怎么重要都不为过,接口设计必须考虑认证和授权,保证特定的人只能访问特定的资源。<br />
<br />同时需要注意在日志中不能含有用户和系统的敏感信息。<br />

4 客户端无关

也就是接口要通用,可以处理不同客户端的请求。一般在接口设计的时候,可以带入透传参数,比如时区,位置(省市区),系统类型,系统版本,应用类型,应用版本等;

5 幂等

即接口的第一次请求的结果和后面N次的重试结果要不变,需要结合场景来保证。

API设计实践


接口框架选型

有了接口设计的原则,可以挑选一个可靠的接口框架来支持自己的工作,

一个好的接口框架应该有如下特点:

  1. 对访问控制的支持;
  2. 自动测试的支持;
  3. 请求响应格式和序列化的支持;
  4. 日志和日志过滤的支持;
  5. 自动生成文档的支持;
  6. 对架构和性能的影响较小;

我一般选的springmvc,因为平时工作跟spring贴合的比较紧,而且spring有各种生态,适合在不同的行业和公司使用。jersey也用,虽然灵活,但是不具备普遍适用性;

设计中的平衡

1 设定团队的API设计和实现模式

api太自由,会影响团队的协作,而共同约定api的设计模式和实现模式可以解决这个问题。

2 避免过度设计

要综合考虑向后的兼容性,但是只实现当前软件当前阶段必须的功能点。

3 谨慎使用AOP

面向切面编程可以在跟业务无关的垂直领域处理问题,比如日志,监控,解析等;可以提高代码的重用性和规范性;

但是也有缺点,比如,增加了测试和分析的难度,也对研发人员要求比较高。

所以需要综合考虑。

4 可维护性和性能之间要平衡

接口实现进行封装可以提高可维护性,但是也会带来性能开销,所以也是需要综合考虑的。

**

小结


通过本篇文章你可以学到如下内容:

  • 接口设计的原则
  • 接口设计框架选型要点
  • 接口设计过程中的设计实践问题

设计良好的接口,可以提高软件的复用性,提高团队的输出效率和质量。

image.png

原创不易,转载请注明出处。

相关文章

  • 0226 rest接口设计

    image.png 背景 为了更方便的书写和阐述问题,文章中按照第一人称的角度书写。作为一个以java为主要开发语...

  • 使用 Protobuf 设计 REST API

    概述 一个设计的好的 REST API 接口,需要一个严格的接口定义。本文试图使用 Protobuf 作为接口设计...

  • REST风格接口设计

    REST服务是一种ROA(面向资源)的应用,主要特点就是把信息存在于HTTP协议方法中(GET,PUT),作用域存...

  • 小程序全栈学习-REST

    RESTFULAPI是采用REST理论设计的接口,这是比较难的概念,暂且将自己REST的相关知识总结记录下...

  • REST接口设计规范

    REST接口设计规范 URI格式规范 URI(Uniform Resource Identifiers) 统一资源...

  • 13 RESTful API

    RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计REST,即Representati...

  • RESTful 接口要怎样设计

    前后端分离开发,RESTful 接口要怎样设计? 前言 REST(Representational State T...

  • RESTful API

    RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。本文参考 《REST和RESTf...

  • rest接口设计常用规范

    抽象地说,任何一个请求都可以看作对资源的操作。简单地说,restful的风格是面向资源的请求方式。 URI(Uni...

  • restfulAPI规范

    什么是restfulAPI 满足rest 设计规范的Api接口。 restfulAPI 的设计规范是怎么样的? 1...

网友评论

      本文标题:0226 rest接口设计

      本文链接:https://www.haomeiwen.com/subject/rmsthhtx.html