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

REST API 设计最佳实践:如何构建、设计和使用 API

但是,我也曾遇到过一些让 REST 蒙羞的 API 例子,错误使用 HTTP 状态码、纯文本响应、不一致的模式、插入端点中动词......不要返回纯文本 尽管并非强制规定的,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串的响应体是不够好的。您还应该指定Content-Type标头。...它必须设置为application/json。...现在问题来了:如何将这样的功能融入REST API? 我的答案是:使用查询字符串(querystring)。 我认为使用查询字符串实现分页非常明显。它看起来像这样: GET: /books?...使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?大多数时候,您希望建立一个快速的API,以便一些服务可以相互交互。

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

    如何使用Spring和Java配置构建一个REST API

    使用@ExceptionHandler 7. 附加的Maven依赖项 8. 总结 1. 概览 本文展示了如何在Spring中配置REST——控制器和HTTP状态响应码、有效负载编排和内容协商的配置。...认识基于Spring的REST Spring框架支持两种创建RESTful服务的方法: 使用MVC 的ModelAndView 使用HTTP消息转换器 ModelAndView这个方法比较老、文档也比较完善...API的一部分,因此应该只在对应于REST的适当层中使用;例如,如果存在DAO/DAL层,则不应该直接使用上面的自定义异常。... 这些库用于将REST资源的表述转换为JSON或XML。...总结 本教程演示了如何使用Spring 4和Java配置来实现一个REST服务,讨论了HTTP响应码、基本内容协商和编排。

    2.1K30

    如何使用mitmproxy2swagger对REST API进行逆向工程分析

    这也就意味着,在该工具的帮助下,广大研究人员能够以自动化的形式对REST API进行逆向分析,并捕捉流量数据。 除此之外,该工具还可以支持从浏览器开发者工具导出并处理HAR文件。  ...或 ... $ pip3 install mitmproxy2swagger  工具使用  Mitmproxy 首先,通过运行mitmproxy工具来捕捉流量数据,我们建议大家使用mitmweb,也就是内置在...> -o -p 需要注意的是,我们可以直接使用已有的schema,并根据需要来进行自定义扩展。...其中的是需要进行逆向工程分析的目标API的URL基地址前缀,然后可以在mitmproxy中观察请求以及响应数据。...://api.example.com/v1/users/2/profile 那么URL基地址前缀则为https://api.example.com/v1。

    1.4K30

    如何使用RESTler对云服务中的REST API进行模糊测试

    RESTler RESTler是目前第一款有状态的针对REST API的模糊测试工具,该工具可以通过云服务的REST API来对目标云服务进行自动化模糊测试,并查找目标服务中可能存在的安全漏洞以及其他威胁攻击面...如果目标云服务带有OpenAPI/Swagger规范,那么RESTler则会分析整个服务规范,然后通过其REST API来生成并执行完整的服务测试。.../build-restler.py --dest_dir 注意:如果你在源码构建过程中收到了Nuget 错误 NU1403的话,请尝试使用下列命令清理缓存...: dotnet nuget locals all --clear RESTler使用 RESTler能够以下列四种模式运行: Compile:从一个Swagger JSON或YAML规范生成一个RESTler...restler-test\Compile\engine_settings.json --no_ssl Fuzz-lean:在编译的RESTler语法中,每个endpoints+methods都执行一次,并使用一组默认的

    5K10

    如何使用Java8 Stream API对Map按键或进行排序

    在这篇文章中,您将学习如何使用Java对Map进行排序。前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题。所以我决定写这样一篇文章。...一、什么是Java 8 Stream 使用Java 8 Streams,我们可以按键和按对映射进行排序。下面是它的工作原理: ? 1....二、学习一下HashMap的merge()函数 在学习Map排序之前,有必要讲一下HashMap的merge()函数,该函数应用场景就是当Key重复的时候,如何处理Map的元素。...这个函数有三个参数: * 参数一:向map里面put的键 * 参数二:向map里面put的 * 参数三:如果键发生重复,如何处理。...四、按Map的排序 当然,您也可以使用Stream API按其对Map进行排序: Map sortedMap2 = codes.entrySet().stream(

    7.1K30

    C# 实现腾讯云 IM 常用 REST API 之消息管理

    关于腾讯 IM REST API REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理、用户管理、会话管理等等。...REST API 接口较为原始,管理能力强大。另外,为了安全性,REST API 仅提供 HTTPS 接口,本文将主要介绍常用的消息管理API。...开发前准备 (1)开发前需要申请 SDK 开发者 ID 及密钥,如何获取请参照如下链接: 腾讯IM即时通信控制台 (2)调用 REST API 之前,需要生成 UserSig ,UserSig 是用户登录即时通信...,多个UserID之间用逗号分隔,如“User1,User2,User3" 3 msg string 文本消息内容 4 Sync bool true:把消息同步到 From_Account 在线终端和漫游上...API 提供了非常丰富与完善的管理功能列表,在这里我们仅是以满足自身应用需要而提取的常用帐户管理功能,更多详情请参照如下链接: REST API 接口列表 | 腾讯云 本文代码仅供您参考使用,您可以参照官方文档开发出更加贴合自身需求的应用

    10710

    API 自动生成文档

    这些样例的作用在于快速展示如何自动生成 api 文档的功能,想深入了解的还是要看下框架的源代码。...post: 发送信息到指定人员邮箱 参数列表: from_email: 发件人邮箱 to_email: 收件人,多个收件人请使用英文逗号分隔隔开...这些 api 有个共同点就是使用 django rest framework 封装好的类来实现的,屏蔽了很多细节,现在我们看一下自定义的发邮件 api,看看它的交互如何? ?...description="发件人"), coreapi.Field(name="to_email", required=True, location="query", description="收件人,多个使用逗号分隔...注意,这里依赖 coreapi ,使用过程中使用 pip 安装下即可 pip install coreapi 方法二、使用第三方库自动生成 api 文档 这里介绍下 django-rest-swagger

    1.6K20

    REST API 最佳实践

    任何遵循 REST 设计原则的 API 都被称为 RESTful API。 简单地说,REST API 是两台计算机通过 HTTP(超文本传输协议)进行通信的媒介,与客户端和服务器的通信方式相同。...11.URL Query 使用下划线分隔单词 查询字符串是 URL 的组成部分。URL 规范规定查询字符串的不同参数使用与号(&)分隔,参数名与使用等号(=)分隔。...16.提供准确的 API 文档 当你创建 REST API 时,你需要帮助用户(消费者)正确学习并了解如何使用它。最好的方法是为 API 提供良好的文档。...第二种,使用 DELETE 方法,用逗号分隔多个资源 ID 放进 URL PATH 中。 DELETE /api/resource/1,2,3......删除多个评论 5.小结 在这篇文章中,你了解了在创建 REST API 时需要记住的几个最佳实践。

    1.7K20

    【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

    为此,可以基于用户进行筛选。...该属性应是模型上文本类型字段的名称列表,例如 from rest_framework import filters class UserListView(generics.ListAPIView):...search=russell 4.2 多字段查找 还可以使用查找 API 双下划线表示法对 ForeignKey 或 ManyToManyField 执行相关查找: search_fields = ['...username', 'email', 'profile__profession'] 4.3 嵌套查找 对于 JSONField 和 HStoreField 字段,您可以使用相同的双下划线表示法根据数据结构中的嵌套进行查找...搜索参数可能包含多个搜索词,这些搜索词应以空格和/或逗号分隔。如果使用多个搜索词,则仅当所有提供的词都匹配时,才会在列表中返回对象。 搜索行为可能会因在 前面加上各种字符而受到限制。

    2.5K30

    用 Deno 编写一个简单的 REST API

    2020 年的年度突破奖, Deno 作为明日之星的项目,目前生态还不是很完善,和一言不合就造轮子的大佬相比,作为代码搬砖界的小丑 -- Copy攻城狮便只能简单记录下自己的学习历程,今天想分享的是如何使用...Deno 编写一个简单的 REST API。...您可以指定一个可选的,用逗号分隔的域列表,以提供允许域的允许列表。 --allow-plugin 允许加载插件。请注意这是一个不稳定的功能。...使用 REST Client 这并不是 Deno 的相关知识,只是为了我们更方便地调试 APIREST Client允许您发送HTTP请求并直接在Visual Studio Code中查看响应。...使用时只需新建.http或者.rest为后缀的文件,编写请求格式的代码即可,如下图中,只需在api.http中写入GET http://localhost:8080,点击Send Request即可发起一次请求

    87110

    ES6系列_4之扩展运算符和rest运算符

    但我们又想传递多个参数,但是不确定参数的个数,这时候可以使用对象扩展运算符来作参数。...这说明是可以传入多个,并且就算方法中引用多了也不会报错。...2.rest运算符 (1)含义 rest参数作用: 将多余的逗号分隔的参数序列转换为数组参数 注意: rest参数必须是最后一个参数,否则报错。...val) } } test(0,1,2,3,4,5,6,7); 结果为:1,2,3,4,5,6,7 最后总结: 扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的 rest...运算符也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的序列组合成一个数组 当三个点(...)在等号左边,或者放在形参上。

    57220

    Python 自动化指南(繁琐工作自动化)第二版:十六、使用 CSV 文件和 JSON 数据

    CSV 代表“逗号分隔”,CSV 文件是存储为纯文本文件的简化电子表格。Python 的csv模块使得解析 CSV 文件变得很容易。...CSV 文件被许多类型的程序广泛支持,可以在文本编辑器(包括 Mu)中查看,并且是表示电子表格数据的一种直接方式。CSV 格式与广告中的完全一样:它只是一个由逗号分隔组成的文本文件。...例如,由于 CSV 文件中的每个单元格都由逗号分隔,所以您可以在每行文本上调用split(',')来获取逗号分隔作为字符串列表。但并不是 CSV 文件中的每个逗号都代表两个单元格之间的边界。...,我们使用文件扩展名tsv,用于制表符分隔。...(第 17 章讲述日程安排,第 18 章解释如何发送电子邮件。) 从多个站点获取天气数据并一次显示,或者计算并显示多个天气预测的平均值。 总结 CSV 和 JSON 是存储数据的常见纯文本格式。

    11.6K40

    C# 实现腾讯云 IM 常用 REST API 之帐户管理

    关于腾讯 IM REST API REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理、用户管理、会话管理等等。...REST API 接口较为原始,管理能力强大。另外,为了安全性,REST API 仅提供 HTTPS 接口。...开发前准备 (1)开发前需要申请 SDK 开发者 ID 及密钥,如何获取请参照如下链接: 腾讯IM即时通信控制台 (2)调用 REST API 之前,需要生成 UserSig ,UserSig 是用户登录即时通信...其关键属性方法说明如下: 序号 参数 类型 说明 1 Accounts string 要删除的 UserID 的列表,多个之间用逗号分隔,如 "user1,user2,user3" 实现代码如下: /...其关键属性方法说明如下: 序号 参数 类型 说明 1 Accounts string 要查询的 UserID 的列表,多个之间用逗号分隔,如 "user1,user2,user3" 返回的用户状态,目前支持的状态有

    12210
    领券