当前位置: 首页 > news >正文

可以做问答的网站torrentkitty磁力猫引擎

可以做问答的网站,torrentkitty磁力猫引擎,做视频的音乐哪里下载网站,wordpress怎样做单页网站自动生成 API 文档的好处不言而喻,它可以提供给你的团队或者外部协作者,方便 API 使用者准确地调用到你的 API。为了降低手动编写文档带来的错误,很多 API 开发者会偏向于寻找一些好的方法来自动生成 API 文档。本文将会介绍一些常用的文档生…

自动生成 API 文档的好处不言而喻,它可以提供给你的团队或者外部协作者,方便 API 使用者准确地调用到你的 API。为了降低手动编写文档带来的错误,很多 API 开发者会偏向于寻找一些好的方法来自动生成 API 文档。本文将会介绍一些常用的文档生成工具:开源工具 Tapir,商业化产品 Apifox。

Tapir 介绍

Tapir 是一个开源的 API 设计和文档工具,它基于 OpenAPI 规范(也称为 Swagger 规范)并提供了更高级别的抽象,可以帮助开发人员更轻松地设计和文档化 RESTful API

Tapir 以可视化的方式显示 API 的不同端点和参数,并提供了丰富的编辑功能和自动化的 API 文档生成工具,可以生成易于阅读和理解的文档,同时也提供了多种导出格式(如 OpenAPI 规范、Markdown 等)以满足不同需求。

除了 API 设计和文档,Tapir 还提供了针对 API 的测试和模拟功能,可以模拟 API 的响应并进行测试。它还提供了自动生成客户端代码的功能,使得开发人员可以更快速地使用 API。

为什么使用 Tapir

1、提供类型安全:Tapir 的主要特点之一是提供类型安全的 API 定义。你可以使用 Scala 的强类型检查器来检查 API 定义的正确性,从而减少由于 API 定义不正确而导致的运行时错误。

import sttp.tapir._import sttp.tapir.generic.auto._import sttp.tapir.json.circe._import io.circe.generic.auto._import java.util.UUIDcase class User(name: String)val paging: EndpointInput[(UUID, Option[Int])] =   query[UUID]("start").and(query[Option[Int]]("limit"))// we can now use the value in multiple endpoints, e.g.:val listUsersEndpoint: PublicEndpoint[(UUID, Option[Int]), Unit, List[User], Any] =   endpoint.in("user" / "list").in(paging).out(jsonBody[List[User]])

2、易于测试:由于 Tapir 提供了类型安全的 API 定义,你可以使用 Scala 的测试框架来轻松地编写测试用例,并确保你的 API 在各种不同的情况下都能正确运行。这可以减少开发过程中的错误和 Bug,提高开发效率。

3、易于维护:Tapir 提供了一种易于维护的 API 定义方式,因为它将 API 定义分解成独立的、可组合的部分。这意味着你可以轻松地更新 API 的某些部分,而不必影响整个 API 的定义。

4、生成客户端和服务器代码:使用 Tapir 可以将 API 定义转换为各种不同类型的客户端和服务器代码,包括 HTTP 客户端和服务器、Scala 和 Java 客户端和服务器等。这可以减少手动编写客户端和服务器代码的工作量,同时减少错误和 Bug 的可能性。

5、自动生成 API 文档:Tapir 提供了一种自动生成 API 文档的方法,这使得 API 文档的创建变得简单且容易维护。你可以选择在运行时从 API 定义生成文档,或者在构建时将 API 定义与文档绑定在一起。

快速使用 Tapir

添加依赖

"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.2.9"

定义一个端点(Endpoint)

case class Status(uptime: Long)val statusEndpoint: PublicEndpoint[Unit, ErrorInfo, Status, Any] =baseEndpoint.in("status").out(jsonBody[Status])

以下是一个分页的例子

import sttp.tapir._
import java.util.UUIDcase class Paging(from: UUID, limit: Option[Int])val paging: EndpointInput[Paging] =   query[UUID]("start").and(query[Option[Int]]("limit"))    .map(input => Paging(input._1, input._2))(paging => (paging.from, paging.limit))

集成 Web 框架

import sttp.tapir._import sttp.tapir.server.akkahttp.AkkaHttpServerInterpreterimport scala.concurrent.Futureimport akka.http.scaladsl.server.Routeimport scala.concurrent.ExecutionContext.Implicits.globaldef countCharacters(s: String): Future[Either[Unit, Int]] = Future.successful(Right[Unit, Int](s.length))val countCharactersRoute: Route =   AkkaHttpServerInterpreter().toRoute(countCharactersEndpoint.serverLogic(countCharacters))  val countCharactersEndpoint: PublicEndpoint[String, Unit, Int, Any] =   endpoint.in(stringBody).out(plainBody[Int])  val countCharactersRoute: Route =   AkkaHttpServerInterpreter().toRoute(countCharactersEndpoint.serverLogic(countCharacters))

生成 Swagger ui

生成描述可以使用 Swagger 或 Redoc 等用户界面进行文档分享。

"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.2.9"
import sttp.tapir._import sttp.tapir.swagger.bundle.SwaggerInterpreterimport sttp.tapir.server.akkahttp.AkkaHttpServerInterpreterimport scala.concurrent.Futureimport scala.concurrent.ExecutionContext.Implicits.globalval myEndpoints: List[AnyEndpoint] = ???// first interpret as swagger ui endpoints, backend by the appropriate yamlval swaggerEndpoints = SwaggerInterpreter().fromEndpoints[Future](myEndpoints, "My App", "1.0")// add to your akka routesval swaggerRoute = AkkaHttpServerInterpreter().toRoute(swaggerEndpoints)

根据 yaml 生成 endpoint

addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.2.9")
Enable the plugin for your project in the build.sbt:
enablePlugins(OpenapiCodegenPlugin)
Add your OpenApi file to the project, and override the openapiSwaggerFile setting in the build.sbt:
openapiSwaggerFile := baseDirectory.value / "swagger.yaml"

这里附上一些配置说明:

settingdefault valuedescription
openapiSwaggerFilebaseDirectory.value / “swagger.yaml”The swagger file with the api definitions.
openapiPackagesttp.tapir.generatedThe name for the generated package.
openapiObjectTapirGeneratedEndpointsThe name for the generated object.

虽然 Tapir 是一个非常有用的 API 设计和文档工具,但它也存在一些缺点:

  1. 学习成本较高:尽管 Tapir 提供了丰富的功能和自动化工具,但其高级抽象和复杂的用户界面可能会使初学者感到困惑。因此,学习 Tapir 的使用需要一定的时间和经验。
  2. 依赖 OpenAPI 规范:Tapir 基于 OpenAPI 规范,因此使用 Tapir 的前提是要对 OpenAPI 规范有一定的了解和理解。如果对 OpenAPI 规范不熟悉,可能需要花费额外的时间来学习规范和相关的概念。
  3. 代码生成可能不准确:尽管 Tapir 提供了自动生成客户端代码的功能,但生成的代码可能会存在一些问题,例如不准确的注释、不规范的代码结构等,可能需要开发人员花费额外的时间进行调整和优化。
  4. 集成可能存在困难:由于 Tapir 是一个单独的工具,需要与其他开发工具(如编辑器、版本控制系统等)进行集成,可能需要额外的设置和配置,可能会增加一些复杂性。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

http://www.hengruixuexiao.com/news/49420.html

相关文章:

  • 湖南网站seo公司手机如何做网站
  • 给客户做非法网站网页设计代码大全
  • 个人社保缴费记录查询win7优化软件
  • 设计公司网站建设费用友情链接可以帮助店铺提高浏览量
  • php网站搭建环境搭建搜索网页
  • 潍坊微信网站今日的新闻
  • 网站2级目录怎么做的搜索引擎优化的核心本质
  • 网站模板模仿网页搜索优化seo
  • 网站咨询弹窗是怎么做的近期国际新闻
  • 做网站的材料咸阳网络推广
  • 苹果网站导航条seo英文
  • 做网站很简单重庆百度推广电话
  • 哪些网站建设公司好aso优化费用
  • 淘宝联盟网站怎么建设互联网营销师培训机构哪家好
  • 做桑拿网站挣钱吗扬州百度seo
  • 福建省城市建设厅网站新东方在线koolearn
  • 武汉网站建设招聘百度seo公司哪家强一点
  • 在线flash相册网站源码浙江网站建设制作
  • 郑州七彩网站建设公司 概况网络营销的目的和意义
  • 深圳石岩建网站营销型网站建设托管
  • 做网站要买服务器吗专业拓客公司联系方式
  • 商业类网站的设计与制作国内看不到的中文新闻网站
  • 报名网站辽宁省建设银行企业推广宣传方案
  • 多个网站给一个网站推广百度精准搜索
  • 要怎么推广网站买号链接
  • 网站成功秘诀郑州高端网站建设
  • 外国ps修图网站短链接在线生成官网
  • 做二手网站赚钱不免费发软文的网站
  • 阜沙网站建设事件营销成功案例
  • wordpress 标题字数企业seo关键词优化