RESTful 接口设计

news2024/11/14 16:52:18

文章目录

  • RESTful 接口设计
    • 1.获取所有员工列表
    • 2.增加一个员工
    • 3.更新员工
    • 4.删除员工
    • 5.查询单个员工


RESTful 接口设计

1.获取所有员工列表

/**
 * 获取所有员工
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--get
 * 3. 请求参数--无
 * 4. 请求响应--多个员工--List<Employee>--json
 */
@RequestMapping(value = "/employees", method = RequestMethod.GET)
@ResponseBody
public List<Employee> list(){
    //查询MySQL数据库得到员工列表信息
    //假装查询数据库
    List<Employee> list = Arrays.asList(new Employee(1L, "大王", 18),new Employee(2L, "小李", 19),new Employee(3L, "小查", 20));
    return list;
}

在这里插入图片描述

2.增加一个员工

/**
 * 增加一个员工
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--POST
 * 3. 请求参数--Employee
 * 4. 请求响应--Employee--json
 */
@RequestMapping(value = "/employees", method = RequestMethod.POST)
@ResponseBody
public Employee add(Employee employee){
    //假设添加员工
    employee.setId(1L);
    return employee;
}

在这里插入图片描述

3.更新员工

/**
 * 更新一个员工
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--PUT
 * 3. 请求参数--id,name,age
 * 4. 请求响应--Employee--json
 */
@RequestMapping(value = "/employees", method = RequestMethod.PUT)
@ResponseBody
public Employee update(Employee employee){
    //假设添加员工
    employee.setName(employee.getName() + "_update");
    return employee;
}

在这里插入图片描述

4.删除员工

添加一个统一的接口响应对象
在域名反写的包下,新建一个Java文件util.JsonResult

package org.chad.util;


import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

//统一的接口响应对象
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class JsonResult {
    private int code;  //请求状态码 成功200 操作失败500 没有登录403
    private String msg; //请求操作之后的返回信息
    private Object data; //请求的响应数据

    public static JsonResult error(String msg){
        return new JsonResult(500, msg, null);
    }
    public static JsonResult error(String msg, Object data){
        return new JsonResult(500, msg, data);
    }

    public static JsonResult success(){
        return new JsonResult(200, "操作成功", null);
    }
    public static JsonResult success(Object data){
        return new JsonResult(200, "操作成功", data);
    }
}

编写删除员工的代码

/**
 * 删除一个员工
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--DELETE
 * 3. 请求参数--id
 * 4. 请求响应--删除之后的状态--jsonResult--json
 *
 * jsonResult:统一的响应返回值
 *
 * {
 *     code:200,
 *     msg:"操作成功”,
 *     data:null
 * }
 */
@RequestMapping(value = "/employees", method = RequestMethod.DELETE)
@ResponseBody
public JsonResult delete(Long id){
    return JsonResult.success();
}

postman显示
在这里插入图片描述

5.查询单个员工

/**
 * 获取某一个员工
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--get
 * 3. 请求参数--id
 * 4. 请求响应--一个员工--Employee--json
 */
@RequestMapping(value = "/employees", method = RequestMethod.GET)
@ResponseBody
public Employee oneList( Long id){
    return new Employee(id, "张三", 18);
}

我们会发现运行不起来

查询所有员工接口:/ employees GET
查询单个员工接口: /employees GET
上面2个接口映射路径与请求方法完全相同,Spring MVC认为是同一个接口,下能同时存在,此时怎么办?
方案1:使用多级路経方式比如:/ employees / detail
方案2:使用参数路怪方式比如:/ employees /{ id }将请求参数作为路径一部分,进打 url 区分。
参数路径:/ employees /( id } 其中{ id }参数占位符
客户端访问 http://Localhost:80/employees/1 1就是 id 参数值
注意点:
接口要获取参数路経中参数必须使用注 @PathVariable ,目的是让 springmvc 参数解析器从路径中解析出参数并进行赋值。如果参数路怪中的占位符名称与请求映射方法形式参数名称不一致时,必须明确的指定映射
“/ employees /( eid }”—>@ PathVariable (" eid ") Long id

改变后

/**
 * 获取某一个员工
 * 1. 请求路径--确认资源--员工--/employees
 * 2. 请求方法--get
 * 3. 请求参数--id
 * 4. 请求响应--一个员工--Employee--json
 */
@RequestMapping(value = "/employees/{id}", method = RequestMethod.GET)
@ResponseBody
public Employee oneList(@PathVariable Long id){
    return new Employee(id, "张三", 18);
}

在这里插入图片描述

至此可以正常查询

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

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

相关文章

苹果iOS App Store上架操作流程

很多开发者在开发完iOS APP、进行内测后&#xff0c;下一步就面临上架App Store&#xff0c;不过也有很多同学对APP上架App Store的流程不太了解&#xff0c;下面我们来说一下iOS APP上架App Store的具体流程&#xff0c;如有未涉及到的部分&#xff0c;大家可以及时咨询&#…

基于微信小程序的学生购电系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

服务端Skynet(二)——消息调度机制

服务端Skynet(二)——消息调度机制 文章目录服务端Skynet(二)——消息调度机制1、提前了解知识1.1、互斥锁&#xff08;mutex lock : **mut**ual **ex**clusion lock&#xff09;1.2、自旋锁&#xff08;spinlock&#xff09;1.3、读写锁&#xff08;readers–writer lock&…

最简单的git图解(多远程仓库)

上一节我们讲了git操作最基本的命令&#xff1a;最简单的git图解&#xff08;最基本命令&#xff09;_jerry_dyy的博客-CSDN博客 这一节我们来讲一下面对多个远程仓库的场景&#xff0c;应该如何来处理。 为什么要有多个远程仓库&#xff1f; 在企业内部开发团队开发过程中&a…

什么是CDN?CDN的技术原理是什么?

什么是CDN&#xff1f; CDN的全称是Content Delivery Network&#xff0c;中文名称“内容分发网络”。其主要原理是在现有网络中增加一层新的网络架构&#xff0c;将源站中的内容发布到不同的网络节点上&#xff0c;使用户可以就近获得所需的内容&#xff0c;从而提高用户访问…

【学习记录】镭神激光雷达与PC机的NTP同步

本文仅用于记录自己在实现镭神C32激光雷达和PC机进行NTP同步时的一些总结。 吐槽在先&#xff0c;镭神的文档写极其不完善&#xff0c;很多都只是提了一句&#xff0c;但并没有完整的说应该具体怎么做。前前后后折腾了三四天&#xff0c;在一知半解的官方技术支持和实验室大佬…

立创EDA仿真入门1 基本操作

立创EDA仿真入门1 基本操作一、进入EDA仿真环境二、画原理图1. 新建工程2. 绘制如下电路图三、仿真1. 运行仿真2. 导出波形图3. 查看仪表一、进入EDA仿真环境 网址&#xff1a; https://lceda.cn/ 进入EDA标准版&#xff0c;点击左上角切换到仿真模式。 二、画原理图 1. 新…

java毕业设计——基于java+Socket+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)——办公自动化系统

基于javaSocketsqlserver的办公自动化系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javaSocketsqlserver的办公自动化系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&#xff1a; 基于…

qemu创建linux虚拟机(亲测有效)

1&#xff0c;网桥的搭建 Bridge方式原理 Bridge方式即虚拟网桥的网络连接方式&#xff0c;是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。 桥接网络&#xff08;也叫物理设备共享&#xff09;被用作把一个物理设备复制到一台虚拟机。网桥多…

【语义分割】数据增强方法(原图与标签同时扩增)

1、数据增强作用 避免过拟合 提升模型的鲁棒性 提高模型的泛化能力 避免样本不均衡的问题 2.、数据增强分类 可分为两类&#xff1a;在线增强和离线增强。这两者的区别在于离线增强是在训练前对数据集进行处理&#xff0c;往往能得到多倍的数据集&#xff0c;在线增强是在训练…

javaEE高阶---Spring 更简单的读取和存储对象

一 : 引言 经过前面的学习&#xff0c;我们已经可以实现基本的 Spring 读取和存储对象的操作了&#xff0c;但在操作的过程中我们发现读取和存储对象并没有想象中的那么“简单”&#xff0c;所以接下来我们要学习更加简单的操作 Bean 对象的方法 . 二 : 存储Bean对象 2.1 使…

【Hack The Box】windows练习-- Reel

HTB 学习笔记 【Hack The Box】windows练习-- Reel &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f3…

视频清晰度优化指南

一、背景介绍 随着移动互联网的深入发展&#xff0c;视频消费场景逐渐变成主流&#xff0c;早期由于手机硬件的限制问题&#xff0c;导致生产出来的视频画质、清晰度存在较大的问题&#xff0c;用户体验不太好&#xff0c;当时的网络也处于4G的发展阶段&#xff0c;网络的限制…

【Hack The Box】windows练习-- support

HTB 学习笔记 【Hack The Box】windows练习-- support &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x…

策略验证_买入口诀_双管齐下买进不怕

写在前面&#xff1a; 1. 本文中提到的“股票策略校验工具”的具体使用操作请查看该博文&#xff1b; 2. 文中知识内容来自书籍《同花顺炒股软件从入门到精通》 3. 本系列文章是用来学习技法&#xff0c;文中所得内容都仅仅只是作为演示功能使用 目录 解说 策略代码 结果 解…

【正点原子FPGA连载】 第一章 MPSoC简介 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第一章 MPSoC简介…

【Loadrunner】学习loadrunner——Controller与Analysis的使用(三)

文章目录1.controller的使用1.1.创建场景的方式1.2.页面的介绍1.3.场景的设置1.2.1.设置初始化1.2.2.设置启动机制1.2.3.设置性能测试脚本的执行时间1.2.4.设置虚拟用户推出机制1.3.场景的运行1.4.场景的运行方式1.4.1.按照场景的方式运行1.4.2.按照group运行2.analysis的使用2…

[数据结构] 图---图的邻接矩阵存储方式模拟实现,包括BFS广度优先遍历和DFS深度优先遍历(上)

图的邻接矩阵存储1&#xff09;邻接矩阵表示法相关概念实现基础框架Graph_matrix构造函数实现基础操作获取某一顶点的下标添加边打印邻接矩阵2&#xff09;BFS广度优先遍历3&#xff09;DFS深度优先遍历4&#xff09;最小生成树之克鲁斯卡尔算法5&#xff09;最小生成树之普里姆…

毕业设计opencv 图像识别 指纹识别 - python

文章目录0 前言1 课题背景2 效果展示3 具体实现3.1 图像对比过滤3.2 图像二值化3.3 图像侵蚀细化3.4 图像增强3.5 特征点检测4 OpenCV5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往…

365天深度学习训练营-第6周:好莱坞明星识别

目录 一、前言 二、我的环境 三、代码实现 四、损失函数 1. binary_crossentropy&#xff08;对数损失函数&#xff09; 2. categorical_crossentropy&#xff08;多分类的对数损失函数&#xff09; 3. sparse_categorical_crossentropy&#xff08;稀疏性多分类的对数损…