RESTFul风格接口如何设计

news2024/11/27 11:38:28

RESTFul风格设计规范

  1. HTTP协议请求方式要求

    REST 风格主张在项目设计、开发过程中,具体的操作符合HTTP协议定义的请求方式的语义

    操作请求方式
    查询操作GET
    保存操作POST
    删除操作DELETE
    更新操作PUT
     
需求分析
  • 数据结构: User {id 唯一标识,name 用户名,age 用户年龄}

  • 功能分析

    • 用户数据分页展示功能(条件:page 页数 默认1,size 每页数量 默认 10)

    • 保存用户功能

    • 根据用户id查询用户详情功能

    • 根据用户id更新用户数据功能

    • 根据用户id删除用户数据功能

    • 多条件模糊查询用户功能(条件:keyword 模糊关键字,page 页数 默认1,size 每页数量 默认 10)

  1. 接口设计

    功能接口和请求方式请求参数返回值
    分页查询GET /userpage=1&size=10{ 响应数据 }
    用户添加POST /user{ user 数据 }{响应数据}
    用户详情GET /user/1路径参数{响应数据}
    用户更新PUT /user{ user 更新数据}{响应数据}
    用户删除DELETE /user/1路径参数{响应数据}
    条件模糊GET /user/searchpage=1&size=10&keywork=关键字{响应数据}
  2. 问题讨论

    为什么查询用户详情,就使用路径传递参数,多条件模糊查询,就使用请求参数传递?

    误区:restful风格下,不是所有请求参数都是路径传递!可以使用其他方式传递!

    在 RESTful API 的设计中,路径和请求参数和请求体都是用来向服务器传递信息的方式。

    • 对于查询用户详情,使用路径传递参数是因为这是一个单一资源的查询,即查询一条用户记录。使用路径参数可以明确指定所请求的资源,便于服务器定位并返回对应的资源,也符合 RESTful 风格的要求。

    • 对于多条件模糊查询,使用请求参数传递参数因为这是一个资源集合的查询,即查询多条用户记录。使用请求参数可以通过组合不同参数来限制查询结果,路径参数的组合和排列可能会很多,不如使用请求参数更加灵活和简洁。 此外,还有一些通用的原则可以遵循:

    • 路径参数应该用于指定资源的唯一标识或者 ID,而请求参数应该用于指定查询条件或者操作参数。

    • 请求参数应该限制在 10 个以内,过多的请求参数可能导致接口难以维护和使用。

    • 对于敏感信息,最好使用 POST 和请求体来传递参数。

  3. 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1056024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

车牌超分辨率:License Plate Super-Resolution Using Diffusion Models

论文作者:Sawsan AlHalawani,Bilel Benjdira,Adel Ammar,Anis Koubaa,Anas M. Ali 作者单位:Prince Sultan University 论文链接:http://arxiv.org/abs/2309.12506v1 内容简介: 1)方向:图像超分辨率技术…

MySQL进阶_1.数据类型约束

文章目录 第一章、名词解释第二章、数据类型2.1、数据类型简介2.2、数据类型对应属性2.3、整数类型2.4、浮点类型2.5、定点数类型2.6、日期和时间类型2.7、文本字符串类型2.7.1、CHAR和VARCHAR区别2.7.2、TEXT 2.8、小结和建议 第三章、约束3.1 约束的定义3.2 非空约束3.3 唯一…

浅谈OV SSL 证书的优势

随着网络威胁日益增多,保护网站和用户安全已成为每个企业和组织的重要任务。在众多SSL证书类型中,OV(Organization Validation)证书以其独特的优势备受关注。让我们深入探究OV证书的优势所在,为网站安全搭建坚实的防线…

内网安全学习

域 域在我的理解就是一个局域网,管理员为了便于操作域内主机,通常会有一个DC(domain control),域控主机可以直接控制其他域内主机,相当于域内的管理员权限,内网渗透的终极目的即拿到域控的权限…

嵌入式学习笔记(41)实时时钟RTC

7.6.1何为实时时钟 (1)real time clock,真实时间,就是所谓的xx年x月x日x时x分x秒星期x (2)RTC是SoC中一个内部外设,RTC有自己独立的晶振提供RTC时钟源(32.768KHz),内部有一些寄存器用来记录时间&#xff…

Acwing 842. 排列数字

Acwing 842. 排列数字 知识点题目描述思路讲解代码展示 知识点 DFS 题目描述 思路讲解 DFS重点是:顺序!(暴力的手法)(递归) 用 path 数组保存排列,当排列的长度为 n 时,是一种方…

pandas读取文件的时候出现‘OSError: Initializing from file failed’

报错原因: pandas.read_csv() 报错 OSError: Initializing from file failed,一般由两种情况引起:一种是函数参数为路径而非文件名称,另一种是函数参数带有中文。 原代码: data pd.read_csv(csv文件.csv) data导入文…

拒绝水文!八大排序(一)【适合初学者】直接插入排序和希尔排序

文章目录 直接插入排序希尔排序 大家好,我是纪宁。 这篇文章将向大家介绍直接插入排序算法和希尔排序算法。 直接插入排序 直接插入排序是一个简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有…

[中间件~大厂面试题] 腾讯三面,40亿的QQ号如何去重

前言: 在Spring Boot框架下,可以使用以下方法来去重40亿个QQ号.请注意:QQ号码的理论最大值为 2 32 − 1 2^{32} - 1 232−1,大概是43亿左右。 文章目录 提前总结(总分总~~~)最粗鲁的方式1. 使用…

深入理解Linux网络笔记(二):内核和用户进程协作之阻塞方式

本文为《深入理解Linux网络》学习笔记,使用的Linux源码版本是3.10,网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读:https://elixir.bootlin.com/linux/v3.10/source 2、内核是如何与用户进程协作的(一) …

疯 狂 的 文 件 夹 【收藏起来】

文章目录 📁故事的开始📁一起疯狂📚资源领取 专栏Python零基础入门篇🔥Python网络蜘蛛🔥Python数据分析Django基础入门宝典🔥小玩意儿🔥Web前端学习tkinter学习笔记Excel自动化处理 &#x1f4…

力扣-345.反转字符串中的元音字母

Idea 将s中的元音字母存在字符串sv中,并且使用一个数组依次存储元音字母的下标。 然后将字符串sv进行反转,并遍历元音下标数组,将反转后的字符串sv依次插入到源字符串s中 AC Code class Solution { public:string reverseVowels(string s) {…

力扣 -- 1049. 最后一块石头的重量 II(01背包问题)

参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int lastStoneWeightII(vector<int>& stones) {int nstones.size();int sum0;for(const auto& e:stones){sume;}int aimsum/2;//多开一行&#xff0c;多开一列vector<vector<int&g…

排序---P1116 车厢重组

P1116 车厢重组 来自 <车厢重组 - 洛谷> 其实这道题本质上就是求逆序对的过程&#xff1a; 两种方法&#xff1a;一个是通过冒泡排序过程求逆序对&#xff1b;一个是通过归并排序过程求逆序对。 法一&#xff1a;当通过冒泡排序进行正序排列时&#xff0c;相邻两个数需要…

批量将文件名称符合要求的文件自动复制到新文件夹:Python实现

本文介绍基于Python语言&#xff0c;读取一个文件夹&#xff0c;并将其中每一个子文件夹内符合名称要求的文件加以筛选&#xff0c;并将筛选得到的文件复制到另一个目标文件夹中的方法。 本文的需求是&#xff1a;现在有一个大的文件夹&#xff0c;其中含有多个子文件夹&#x…

Redis与分布式-集群搭建

接上文 Redis与分布式-哨兵模式 1. 集群搭建 搭建简单的redis集群&#xff0c;创建6个配置&#xff0c;开启集群模式&#xff0c;将之前配置过的redis删除&#xff0c;重新复制6份 针对主节点redis 1&#xff0c;redis 2&#xff0c;redis 3都是以上修改内容&#xff0c;只是…

C++位图—布隆过滤器

目录 位图概念位图应用 布隆过滤器简介布隆过滤器的优缺点布隆过滤器应用场景布隆过滤器实现布隆过滤器误判率分析 总结 位图概念 位图是一种数据结构&#xff0c;用于表示一组元素的存在或不存在&#xff0c;通常用于大规模数据集的快速查询。它基于一个位数组&#xff08;或位…

管理经济学基本概念(二): 规模经济、需求曲线、供给曲线等

1、关键术语 1.1、边际报酬递减规律 边际报酬递减规律是指随着产出量的扩大&#xff0c;边际生产率(与增量投入要素相联系的增量产出量)最终会下降。 递增的边际生产率意味着边际成本递增。 递增的边际成本最终导致平均成本递增。 1.2、规模经济 (1) 如果长期平均成本相对…

打开泰坦陨落2找不到msvcp120.dll无法执行代码/msvcr120.dll丢失修复方法

msvcp120.dll 是 Windows 操作系统中的一个动态链接库文件&#xff0c;对于许多程序和游戏的运行起着至关重要的作用。然而&#xff0c;有时候我们可能会遇到 msvcp120.dll 丢失的情况&#xff0c;导致电脑出现各种问题。本文将详细介绍 msvcp120.dll 丢失的四种解决方法&#…

【项目】5.1阻塞和非阻塞、同步和异步 5.2Unix、Linux上的五种IO模型

5.1阻塞和非阻塞、同步和异步&#xff08;网络IO&#xff09; 典型的一次IO的两个阶段是什么&#xff1f;数据就绪和数据读写 数据就绪&#xff1a;根据IO操作的就绪状态 阻塞非阻塞 数据读写&#xff1a;根据应用程序和内核的交互方式 同步异步 陈硕&#xff1a;在处理IO的…