首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计 API 的 22 条最佳实践,实用!

不应该: GET /shops/:shopId/category/:categoryId/price 这很糟糕,因为它指向的是一个属性而不是资源。...使用简单序数作为版本 始终对API使用版本控制,并将其向左移动,使其具有最大的作用域。版本号应该是v1,v2等等。...不要在URL中通过认证令牌 这是一种非常糟糕的做法,因为url经常被记录,而身份验证令牌也会被不必要地记录。 不应该: GET /shops/123?...PATCH:更新现有资源,它只更新提供的字段,而不更新其他字段。 DELETE:删除已存在的资源。 18....例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。

1.2K10

22条API设计的最佳实践

验证内容类型 17. 对CRUD函数使用HTTP方法 18. 在嵌套资源的URL中使用关系 19. CORS(跨源资源共享) 20. 安全 21. 错误 22....不应该: GET /shops/:shopId/category/:categoryId/price 这很糟糕,因为它指向的是一个属性而不是资源。...使用简单序数作为版本 始终对API使用版本控制,并将其向左移动,使其具有最大的作用域。版本号应该是v1,v2等等。...PATCH:更新现有资源,它只更新提供的字段,而不更新其他字段。 DELETE:删除已存在的资源。 18....例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

重磅!!!微软发布ASP.NET Core 2.2,先睹为快。

路由参数变换器 (以及来自Scott Hanselman的帖子) 用于应用程序运行状况监视的New Health Checks API 由于进程内托管支持,IIS上的吞吐量提高了400% 高达15%的MVC模型验证性能得到改善...除了所有健康检查包之外,BeatPulse团队还结合了其他功能,如脉冲跟踪(Application Insights和Prometheus),我们可以为故障通知和UI界面配置不同的监控系统,并具有一个可以查看健康状态的全局概览图表...请注意,针对.NET Core(而不是.NET Framework)的项目不应具有为Microsoft.AspNetCore.App程序包参考指定的程序包版本,因为这将由SDK自动管理。...如果在部署到Azure App Service后收到启动错误,请尝试通过将AspNetCoreModule属性设置为值“AspNetCoreModule” 来配置项目以使用现有版本的ANCM ,例如:...有关如何在Azure App Service中使用其他配置在64位进程中运行ASP.NET Core应用程序的其他信息,请参阅此文章。

3.4K40

创建 REST 服务简介

REST 简介REST 命名自“Representational State Transfer”,具有以下属性: REST 是一种架构风格,而不是一种格式。...%REST.Impl 类提供了可以调用的方法,以便设置 HTTP 标头、报告错误等。Web 应用程序,通过 Web Gateway 提供对 REST 服务的访问。...后面的部分提供了更多细节,但现在,请注意,永远不应该编辑调度类,但可以修改其他类。此外,当重新编译规范类时,调度类会自动重新生成并更新实现类(保留编辑)。...此方法进行其他检查,并在出现错误时调用 %REST.Impl 的其他方法。重要提示:因为调度类是一个生成的类,你永远不应该编辑它。 提供了覆盖部分调度类而不对其进行编辑的机制。...在每种情况下,这些存根方法都具有遵循 REST 服务规范定义的契约的签名。请注意,对于 options 方法, 不会生成存根方法供实现。相反,%CSP.REST 类会自动执行所有选项处理。

56220

ASP.NET Core 2.2 正式版发布

LinkGenerator类改进URL生成并支持路由参数变换器(以及来自Scott Hanselman的文章) 用于应用程序运行状况监视的新的健康检查API IIS进程内托管支持,吞吐量提高了400% 提高15%MVC模型验证性能...除了所有健康检查包之外,BeatPulse团队还结合了其他功能,如Application Insights和Prometheus,故障通知和UI界面,我们可以配置不同的受监控系统,并具有健康状态的全局视图...请注意,针对.NET Core(而不是.NET Framework)的项目不应为Microsoft.AspNetCore.App程序包指定程序包版本(译者注:这个程序包不指定具体版本号,由SDK管理),...如果在部署到Azure App Service后收到启动错误,请尝试通过将AspNetCoreModule属性设置为值“AspNetCoreModule”来配置项目以使用现有版本的ANCM,例如: <PropertyGroup...有关如何在Azure App Service中使用其他配置在64位进程中运行ASP.NET Core应用程序的其他信息,请参阅此文章。

2K20

spring boot 下swagger2 的使用

在默认情况下,Swagger-Core只会扫描解析具有@Api注解的类,而会自动忽略其他类别资源(JAX-RS endpoints,Servlets等等)的注解。...该注解包含以下几个重要属性: tags:API分组标签。具有相同标签的API将会被归并在一组内展示。...具有相同路径的不同操作会被归组为同一个操作对象。不同的HTTP请求方法及路径组合构成一个唯一操作。此注解的属性有: value:对操作的简单说明,长度为120个字母,60个汉字。...如果API具有不同的返回类型,那么需要分别定义返回值,并将返回类型进行关联。 但Swagger不支持同一返回码,多种返回类型的注解。注意:这个注解必须被包含在@ApiResponses注解中。...有效值为 "List", "Set" or "Map",其他任何无效的值都会被忽略 2)Model的注解 @ApiModel() 用于类 提供对Swagger model额外信息的描述。

59210

FastAPI 作为集大成者,它的灵感来自哪里?

具有自动交互式文档。 基于标准:基于(并完全兼容)API 的开放标准:OpenAPI(以前称为 Swagger)和 JSON Schema。...具有合理的默认值,但有强大的定制功能。 Swagger / OpenAPI 为 API 规范采用开放标准,而不是使用自定义架构。...并集成基于标准的用户界面工具: Swagger UI Redoc 选择这两个是因为它们相当受欢迎且稳定,但是通过快速搜索,您可以找到数十个 OpenAPI 的其他替代用户界面(可以与 FastAPI 一起使用...Flask-apispec 从与定义序列化和验证的相同的代码自动生成 OpenAPI schema。 NestJS 和 Angular 使用 Python 类型具有强大的编辑器支持。...Molten 使用模型属性的“默认”值为数据类型定义额外的验证。这改善了编辑器支持,以前这在 Pydantic 中不可用。

2K10

在 REST 服务中支持 CORS

恶意脚本可能允许用户使用授予用户的权限访问另一个域中的信息,但随后在用户不知道的情况下,将机密信息用于其他用途。为了避免这种安全问题,浏览器一般不允许这种跨域调用。...在不使用跨域资源共享 (CORS) 的情况下,具有访问 REST 服务的脚本的网页通常必须与提供 REST 服务的服务器位于同一域中。...XMLHttpRequest 具有 CORS 的自定义标头。用户查看此网页并运行脚本。用户的浏览器检测到与包含网页的域不同的域的 XMLHttpRequest。...此请求始终未经身份验证发送,并由 CSPSystem 用户执行。此用户应具有 REST 服务使用的任何数据库的 READ 权限;如果没有,服务将响应 HTTP 404 错误。...此属性的值必须是自定义类的完全限定名称。

2.6K30

swagger-ui简要使用说明

swagger-ui简要使用说明 配置说明 添加依赖 与springboot 进行集成的时候版本尽可能的新。不然在页面上会有错误产生。....contact("创建人") .version("1.0").build(); } } API详细说明 作用范围 API 使用位置 对象属性...非对象参数描述 @ApiImplicitParam 用在@ApiImplicitParams的方法里边 描述返回对象的意义 @ApiModel 用在返回对象类上 注解 @ApiImplicitParam 属性...以流的形式提交 仅支持POST header 参数在request headers 里边提交 form 以form表单的形式提交 仅支持POST dataType 参数的数据类型 只作为标志说明,并没有实际验证...Long long String String … 其他的 name 接收参数名 value 接收参数的意义描述 required 参数是否必填 true false defaultValue

2K30

【Nest教程】集成Swagger自动生成接口文档

现如今,前后台开发分离已成为一种标准,后台负责提供api,其余功能交给前台来实现,但是项目开发中的沟通成本也随之提高,这部分成本主要体现在前台需要接口文档,但是后台可能没时间写或者其他原因,导致功能对接缓慢...app.useGlobalInterceptors(new TransformInterceptor()); app.useGlobalPipes(new ValidationPipe()); //开启一个全局验证管道....setDescription('系统接口文档') // 文档介绍 .setVersion('1.0.0') // 文档版本 .build(); // 为了创建完整的文档(具有定义的...它提供了几种允许设置诸如标题,描述,版本等属性的方法。为了创建一个完整的文档(使用已定义的 HTTP 路由),我们使用 SwaggerModule 类的 createDocument() 方法。...4 其他配置项 还提供很多配置项,如ApiQuery、ApiBody、ApiParam、ApiHeader、ApiHeaders等,这里就不一一介绍了,有兴趣可以浏览官方文档: https://docs.nestjs.com

2.6K1411

独家 | 提升API设计技能的22个最佳实践(附链接)

使用简单序数作为版本 始终对 API 进行版本控制并将向左移动,以使其具有最高的范围。版本号应为 v1、v2 等。...验证内容的类型 服务器不应内容类型。例如,如果您接受 application/x-www-form-urlencoded,那么攻击者可以创建一个表单并触发一个简单的 POST 请求。...它只更新提供的字段,其他字段不理会 DELETE:删除现有资源。 18....错误 当客户端向服务器发出无效/不正确的请求,或者传输了无效/不正确的数据,而服务器拒绝该请求时,就会报错,具体来说是服务器错误。 例如无效的身份验证凭据、错误的参数、未知的版本 ID 等。...由于一个或多个服务错误而拒绝客户端请求时,请务必返回 4xx HTTP 错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。 22.

53650

springboot第30集:springboot集合问题

return servers;     }     // 其他方法... } 具体的错误消息为 "org.apache.ibatis.type.TypeException: Could...non_null: 只包含非null的属性其他空值(如空字符串、空集合、空数组)将被排除。 non_absent: 包含非null和非缺失(absent)的属性。"...non_empty: 包含非null和非空的属性其他空值(如空字符串、空集合、空数组)将被排除。 null: 包含所有属性,即使属性值为null或空值。...这种情况通常发生在接收的JSON数据格式不正确时,可能是由于发送的数据格式错误或存在其他格式问题。请确保传递给JSON.parse()的数据是有效的JSON字符串,并符合JSON的语法要求。...检查JSON字符串中是否存在不正确的字符、缺少引号或其他语法错误。 另外,您可以使用console.log(event.data)输出接收到的event.data数据,以便查看实际接收到的内容。

31420
领券