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

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

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

1.3K10

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 类会自动执行所有选项处理。

    58120

    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,例如: 其他配置在64位进程中运行ASP.NET Core应用程序的其他信息,请参阅此文章。

    2.1K20

    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额外信息的描述。

    64710

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

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

    2.2K10

    在 REST 服务中支持 CORS

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

    2.6K30

    为摸鱼而生,安服仔必备

    5、设置cookie的HttpOnly属性:将cookie的HttpOnly属性设置为true,可以防止通过JavaScript访问和窃取cookie信息,从而减少 XSS 攻击的可能性。...2、实施适当的身份验证和授权机制来限制对API的访问。‌ 3、限制对敏感或特权API端点的访问,‌确保只有具有特定权限的用户或角色才能访问。‌...2、使用open_basedir(针对PHP):在PHP中,可以通过设置open_basedir来限制脚本可以访问的目录,从而防止它们读取不应该被访问的文件。...漏洞描述 短信验证码绕过漏洞主要涉及到通过修改或绕过正常的验证码验证过程,‌使得用户能够使用错误的或虚构的验证码完成验证,‌从而获得未经授权的访问权限或执行未经授权的操作。‌...这可能包括用户隐私数据、商业机密或其他敏感信息。 修复建议 1、细化权限控制‌:将项目中的权限控制细化到接口层面,对每个接口进行权限校验,确保当前登录用户具有操作该接口的权限。

    12110

    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

    2.1K30

    【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.8K1411
    领券