REST
Awesome REST
¶
有关 RESTful API 架构、开发、测试和性能的优质资源的协作列表. 请随意为这个持续的列表做出贡献.
Design¶
- 建筑风格和 基于网络的软件架构的设计 - Roy Fielding 定义 REST 的论文
- HTTP API design guide extracted from work on the Heroku Platform API
- Best Practices for Designing a Pragmatic RESTful API
- How to design a REST API? - 解决安全、分页、过滤、版本控制、部分答案、CORS 等问题的完整指南.
- Richardson Maturity Model - 由 Martin Fowler 解释,最初由 Leonard Richardson 在 QCon 2008.
- Enterprise Integration Using REST - 讨论非公共 API 的限制和灵活性,以及跨多个团队进行大规模 RESTful 集成的经验教训.
- HATEOAS - 清晰解释 HATEOAS 是什么以及为什么应该使用它.
- How to GET a cup of coffee
- REST API Tutorial - RestApiTutorial.com 致力于跟踪 REST API 最佳实践并提供资源,以便开发人员能够快速参考和自我教育.
- API-Security-Checklist - REST API 安全性最佳实践
Guidelines¶
- Adidas REST API Guidelines - 阿迪达斯 REST API 指南定义了阿迪达斯构建 REST API 的标准和指南.
- Atlassian REST API design guidelines version 1 - 本文档为为 Atlassian 应用程序设计 REST API 的 Atlassian 开发人员提供指南.
- Cisco REST API Guide - 思科 REST API 设计指南.
- Google Cloud API design guide - Google 在设计 Cloud API 和其他 Google API(REST API 和 gRPC API)时遵循的准则.
- Haufe API Style Guide - 由 Haufe-Lexware CTO 团队创建的指南.
- Microsoft REST API Guidelines - Microsoft REST API 指南作为一项设计原则,鼓励应用程序开发人员通过 RESTful HTTP 接口访问资源.
- Restful API Guidelines by Zalando - 开发 Restful API:一套全面的指南.
Standards¶
- JSON API - 在 JSON 中构建 API 的标准.
- RAML - 简单简洁的方式来描述 RESTful API.
- JSend - 简单的规范,规定了如何格式化来自 Web 服务器的 JSON 响应的一些规则.
- OData - 开放协议允许创建和使用可查询和可互操作的 RESTful API. 相当复杂.
- HAL - 简单的格式,为 API 中的资源之间的超链接提供一致且简单的方法.
- JSON-LD - 用 JSON (W3C) 描述链接数据和超媒体关系的标准.
- Hydra - 超媒体驱动的 Web API (W3C) 词汇.
- Schema.org - 描述通用数据模型的模式集合.
- OpenAPI - OpenAPI 规范以前称为 Swagger 规范,是世界上最流行的用于定义 Restful API 的描述格式.
Clients¶
PHP Clients¶
- Guzzle - 用于使用 RESTful Web 服务的 HTTP 客户端和框架.
- Buzz - 另一个轻量级 HTTP 客户端.
- unirest for PHP - 简化、轻量级的 HTTP 客户端库.
JavaScript Clients¶
- restangular - AngularJS 服务可以正确、轻松地处理 REST API.
- restful.js - JS client for interacting with server-side RESTful resources.
- traverson - 用于 Node.js 和浏览器的超媒体 API/HATEOAS 客户端
- raml-client-generator - 为 js 生成静态客户端库.
Node.js Clients¶
- restler - Node.js 的 REST 客户端库.
- unirest for Node.js - 简化、轻量级的 HTTP 客户端库.
Ruby Clients¶
- RESTClient - 适用于 Ruby 的简单 HTTP 和 REST 客户端,受到用于指定操作的微框架语法的启发.
- Spyke - 以类似 ActiveRecord 的方式与 REST 服务交互.
- excon - 可用、快速、简单的 Ruby HTTP 1.1. 它作为通用 HTTP(s) 客户端效果很好,特别适合在 API 客户端中使用.
- httparty - 让 HTTP 再次变得有趣!
- Net::HTTP - Net::HTTP 提供了丰富的库,可用于构建 HTTP 用户代理.
- raml-ruby-client-generator - 从 RAML 文件自动生成 API 客户端.
Go Clients¶
.NET Clients¶
- RestSharp - 适用于.NET 的简单 REST 和 HTTP API 客户端
- Refit - 适用于 Xamarin 和 .NET 的自动类型安全 REST 库
- Flurl - 流畅、可移植、可测试的 REST/HTTP 客户端库
- RestEase - 易于使用的类型安全 REST API 客户端库,简单且可定制. 深受改装启发
- Tiny.RestClient - 适用于 .NET 的最简单的 Fluent REST 客户端.
- RestLess - .Net Standard 的自动类型安全无反射 REST API 客户端库.
- Apizr - 基于 Refit 的 Web API 客户端,但具有弹性(重试、连接、缓存、身份验证、日志、优先级等).
Generators¶
- openapi-generator - OpenAPI 生成器允许在给定 OpenAPI 规范(v2、v3)的情况下自动生成 API 客户端库(SDK 生成)、服务器存根、文档和配置.
Servers¶
Directly On Top Of A RMDB¶
- postgrest - 直接从现有 PostgreSQL 数据库提供完全 RESTful API.
- MySQL HTTP plugin - 适用于任何 MySQL 数据库的简单 REST 式 / CRUD 服务器.
- pREST - 来自用 Go 编写的任何现有 PostgreSQL 数据库的完全 RESTful API.
Node.js¶
- node-restify - 专门用于 REST API 的框架.
- Sails.js - Node.js Web 框架嵌入了自动生成 REST API 的命令.
- mers - 将 Mongoose 查找器公开为 RESTful API 的 Express 服务.
- Baucis - 基于您的 Mongoose 实体构建可扩展的 REST API.
- flatiron/resourceful - JavaScript 的同构资源引擎.
- loopback - 强大的 Node.js 框架,用于创建 API 并轻松连接到后端数据源.
- Feathers - 是一个实时的微服务 Web 框架,让您可以通过 RESTful 资源、套接字和灵活的插件来控制数据.
- Expressa - Express 中间件,用于使用简单的管理编辑器和权限模型从 JSON 模式创建 API.
- rest-hapi - 基于支持关系数据的mongoose模型生成RESTful API.
- Nestjsx/crud - 使用 NestJS 和 TypeORM 为 RESTful API 生成 CRUD 控制器和服务.
PHP¶
- Microrest - 微型网络应用程序在任何关系数据库之上提供 REST API.
- Drest - 用于将 Doctrine 实体公开为 REST 资源端点的库.
- Restler - 将 PHP 方法公开为 RESTful Web API 的轻量级框架.
- HAL - 超文本应用程序语言 (HAL) 构建器库.
- Apigility - 使用 Zend Framework 2 构建的 API 构建器.
- phprest - PHP 的专用 REST 微框架.
- Hateoas - 支持实现 HATEOAS REST Web 服务表示的 PHP 库.
- Fusio - 开源API管理平台.
Symfony2¶
- REST APIs with Symfony2: the Right Way - 使用 Symfony2 框架构建最先进的 REST API 的完整指南.
- FOSRestBundle - 为您的 REST API 捆绑处理视图、路由、错误处理等.
- stanlemon/rest-bundle - 使用约定优于配置构建基于 Doctrine 实体的 REST API.
- lakion/Lionframe - 多个社区库之间的 Glu 可以简化 API 开发.
- BazingaHateoasBundle - 整合 Hateoas 库到 Symfony2 应用程序中.
- Symfony REST Edition - 从 Symfony2 应用程序开始,并预先配置所有 REST 友好的捆绑包.
- NgAdminGeneratorBundle - 基于
stanlemon/rest-bundle
的 Boostrap ng-admin 配置. - DunglasApiBundle - 构建遵循 Hydra/JSON-LD 规范的 REST API.
- API Platform - 用于创建超媒体 REST API 的专用 Symfony 版本.
- NelmioApiDocBundle - 从注释生成 REST API 的文档.
PowerShell¶
- Pode - Pode 是一个面向 PowerShell 开发人员的跨平台、开源、社区支持的 Web 服务器和 REST API 框架
Python¶
- Django REST framework - 强大而灵活的工具包,可以轻松构建 Web API.
- django-tastypie - 为 Django 应用程序创建美味的 API.
- flask-restful - Flask 扩展增加了对快速构建 REST API 的支持.
- flask-restless - Flask 扩展,用于为使用 SQLAlchemy(或 Flask-SQLAlchemy)定义的数据库模型生成 ReSTful API.
- hug - 轻量级且快速的 API 框架.
- sandman - 适用于现有数据库驱动系统的自动化 REST API.
- restless - 基于从 TastyPie 吸取的经验教训的框架无关的 REST 框架.
- Python Eve - Eve是一个专为人类设计的开源Python REST API框架. 它允许轻松构建和部署高度可定制、功能齐全的 RESTful Web 服务.
- Ramses - 通过在运行时生成生产就绪的 API,使 RAML 文件可执行.
- Flask-Potion - Flask-Potion 是一个强大的 Flask 扩展,用于构建 RESTful JSON API. 它还提供了多个客户端,以便更轻松地访问 API.
- apistar - 一个智能 Web API 框架,专为 Python 3 设计.
- Falcon - Falcon 是一个裸机 Python Web API 框架,用于构建高性能微服务、应用程序后端和更高级别的框架.
- FastAPI - FastAPI 是一个现代、快速(高性能)的 Web 框架,用于基于标准 Python 类型提示使用 Python 3.6+ 构建 API. 使用 Swagger UI 和 ReDoc、基于 OpenAPI 和 JSON Schema 的自动 API 文档.
Ruby¶
Go¶
- gocrud:Go 库可简化任意深度结构化数据的创建、更新和删除 — 使构建 REST 服务变得快速、轻松.
- go-json-rest - “net/http”之上的薄层,有助于轻松构建 RESTful API.
- sleepy - 用 Go 编写的 RESTful 微框架.
- restit - Go 微框架帮助编写 RESTful API 集成测试.
- go-relax - 用于构建 RESTful API 的可插入组件框架.
- go-rest - Go 的小而邪恶的 REST 框架.
- go-restful - 用于构建 Restful API 的声明式高度可读框架.
- Goat - Go 中的简约 REST API 服务器.
- Resoursea - 用于快速编写基于资源的服务的 REST 框架.
Java¶
- RestExpress - 基于 Netty、高性能、轻量级、无容器、可插件扩展的框架,非常适合微服务架构.
- Vertx-Web - Vert.x-Web 是一组用于使用 Vert.x 构建 Web 应用程序的构建块,Vert.x 是一个用于在 JVM 上构建反应式应用程序的工具包.
- Dropwizard - 用于开发操作友好、高性能、RESTful Web 服务的框架.
Scala¶
- Chaos - 用于在 Scala 中编写 REST 服务的轻量级框架.
Haskell¶
- Rest for Haskell - 该包允许您在 Haskell 中创建 REST API. 这些 API 可以在不同的 Web 框架中运行. 它们还可以用于自动生成文档以及客户端库.
Testing¶
Querying¶
- httpie - 命令行 HTTP 客户端,比“curl”对开发人员友好得多.
- resty - 可以在管道(bash 或 zsh)中使用的小型命令行 REST 客户端.
- jq - 命令行 JSON 处理器,与 cURL 等命令行 HTTP 客户端结合使用.
- HttpMaster - 用于测试 REST API 和服务的 GUI 工具. 仅限 Windows 操作系统.
- Http-console - HTTP 命令行界面,让您像本地人一样讲 HTTP
- HTTP Prompt - HTTP Prompt 是一个交互式命令行 HTTP 客户端,具有自动完成和语法突出显示功能,基于 HTTPie 和 Prompt_toolkit 构建.
- rest-assured - Java DSL,用于轻松测试 REST 服务.
- Insomnia - 跨平台 HTTP 和 GraphQL 客户端
- ExtendsClass - 使用简单的基于 Web 的 HTTP 客户端发出 HTTP 请求.
- TestMace - 用于 API 自动化测试的跨平台简单但功能强大的 IDE.
- Milkman - 可扩展的跨平台请求/响应工作台,不仅适用于 http 调用.
- Schemathesis - 基于属性的测试工具,用于使用 Open API 和 GraphQL 规范构建的 Web 应用程序.
- Step CI - API 质量保证的开源框架,根据开放 API 规范自动测试 REST、GraphQL 和 gRPC.
- RestQA - 基于 BDD / Gherkin 的 REST API 测试框架,用于管理微服务本地测试.
Mocking¶
- RequestBin - 检查和调试您的客户端或第三方 API 发送的 Webhook 请求.
- httpbin - HTTP 请求和响应服务 - 又名 HTTP 瑞士军刀.
- FakeRest - 修补 XMLHttpRequest 以伪造 REST API 客户端.
- json-server - 使用快速原型设计从夹具文件提供 REST API.
- Mocky.io - 创建虚假 HTTP 响应的免费在线服务.
- MockServer - 轻松模拟通过 HTTP 或 HTTPS 集成的任何系统.
- Request Baskets - 收集 HTTP 请求并通过 RESTful API 或 Web UI 检查它们的服务.
- DuckRails - 快速、动态地模拟 API 端点.
- Mockoon - 轻松在本地创建模拟 API. 无需远程部署,无需帐户,开源.
- Mockintosh - 模拟服务器生成器,能够生成 RESTful API 并与消息队列通信以模仿异步任务.
Validating¶
- JSON Schema - 声明性语言,允许您注释和验证 JSON 文档
Public REST APIs To Use In Tests¶
- Deck of Cards API - 开放 API 用于模拟一副纸牌.
- ProgrammableWeb - 世界上最大的 API 存储库.
- Public APIS - 探索银河系中最大的 API 目录.
- Marvel Comics API - 查询漫威超级英雄的人物、故事、事件.
- JSON Placeholder - 免费的在线 REST 服务,您可以在需要虚假数据时使用.
- APIs.guru - Web API 的维基百科,每个 API 都有 OpenAPI/Swagger 描述.
- The Cat API - Public API for Cats Images, Facts and Jokes.
Documentation¶
- Swagger - REST API 的文档/查询 Web 界面.
- API doc - RESTful Web API 的内联文档.
- raml2html - 从 RAML 文件生成 HTML 文档.
- ReDoc - OpenAPI/Swagger 支持的三面板文档.
- Slate - 使用 Middleman 提供美观且响应灵敏的三面板 API 文档.
- Optic - 维护准确的 API 规范,无需编写 OpenAPI/Swagger. 适用于任何堆栈
API Gateway¶
- Kong - 由 Nginx 支持的可扩展、分布式和面向插件的 API 网关.
- Tyk API Gateway - 带有分析日志记录的轻量级 API 网关,用 Go 编写.
- API Umbrella - 用于公开 Web 服务的 API 管理平台,具有 Web 界面和分析功能,用 Lua 编写.
- WSO2 API Management - API 管理工具,具有轻量级网关和 API 生命周期管理,用 Java 编写.
- Express Gateway - 构建在 ExpressJS (Node.js) 之上的微服务 API 网关.
- KrakenD - 具有中间件的超高性能 API 网关. 用 Go 编写.
- AWS API Gateway - 完全托管的服务,帮助开发人员创建、发布、维护、监控和保护任何规模的 API.
SaaS Tools¶
- Nango - 使用 REST API 的本机集成框架(开源).
- Runscope - 自动化 API 监控和测试.
- Ping-API - 自动化 API 监控和测试.
- Apiary - 协作设计、即时 API 模拟、生成文档、集成代码示例、调试和自动化测试.
- Amazon API Gateway - Amazon API Gateway 是一项完全托管的服务,使开发人员可以轻松创建、发布、维护、监控和保护任何规模的 API.
- Apigee - Apigee 是为企业和开发者提供 API 技术和服务的领先提供商.
- 3scale - 基于 Nginx 的 API 网关,用于将内部和外部 API 服务与 3scale 的 API 管理平台集成.
- Assertible - 在部署后跨环境持续测试和监控您的 API.
- Moesif - 用于 RESTful 和 GraphQL 调试、监控和使用情况跟踪的 API 分析.
- Beeceptor - HTTP 检查、模拟和代理服务. 提供用于创建模拟 API 端点和模拟响应的命名端点.
Miscellaneous¶
- react-admin - 将 ReactJS 管理 GUI 添加到任何 RESTful API.
- ng-admin - 将 AngularJS 管理 GUI 添加到任何 RESTful API.
- swagger-codegen - 根据 OpenAPI 规范(以前称为 Swagger 规范)自动生成客户端库或服务器存根.
- Lumber - 生成应用程序的管理界面.
- Linx - 低代码API平台. 构建、调试和托管 REST API
License¶
本作品已获得许可 Creative Commons Attribution 4.0 International License.