RESTful 接口设计拓展,接口设计注意事项,注解的简化

news2024/10/6 6:49:11

文章目录

  • RESTful 接口设计拓展
    • 1.多参数传递
    • 2.URL拓展
    • 3.RESTful接口注意事项
    • 4.注解的简化


RESTful 接口设计拓展

1.多参数传递

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

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

@PathVariable Long id,@PathVariable String name, @PathVariable int age

也可以换成

Employee employee 对象的方式,也是可以成功传递参数的。

2.URL拓展

在这里插入图片描述

参数路径 优缺点

优点:一定程度上隐藏参数
缺点:如果参数较多,url比较长,不优雅

开发时一般时2者混用

3.RESTful接口注意事项

在这里插入图片描述

我们用的时Spring boot 版本的MVC ,spring boot 已经为我们自动装配。
如果是原生MVC的就需要加过滤器

4.注解的简化

package org.chad.controller;

import org.chad.domain.Employee;
import org.chad.util.JsonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

/**
 * 员工的对外接口声明类
 * 员工的控制层/表现层
 */
@RestController //@Controller + @ResponseBody
@RequestMapping("employees")
public class EmployeeController {


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

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

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

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

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

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

做了三件事情
1.路径简化
2.@RestCotroller 代替 @Cotroller + @ResponseBody
3.@GetMapping 代替了 @RequestMapping(method = RequestMethod.GET)

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

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

相关文章

Python接口测试之requests详介与实战

目录 requests介绍 1、简述发展史 2、安装 3、官方自评 4、requests支持的请求类型 4、requests的参数与返回 requests接口请求Python脚本实战 1、GET接口实战 2、POST接口实战 3、PUT接口实战 4、DELETE接口实战 requests介绍 Http网络接口请求库 1、简述发展史 …

设计师找灵感就上这几个网站。

推荐5个设计师必备的设计灵感网站&#xff0c;希望对你有帮助&#xff01; 1、pinterest&#xff08;梯子&#xff09; https://www.pinterest.es/Pinterest是以瀑布流的方式来展示图片&#xff0c;在算法上也会根据你的浏览和识别的图片去做推算。 所以Pinterest是需要“经营”…

网络编程概述

Java是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程 序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。 Java提供的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;联网的底层 细节被隐藏在 Java 的本机安装系统里&#xff0c;由 JVM …

权限系统设计

背景 目前只做了用户账号间的数据隔离。存在情况&#xff0c;同一个项目里不同人创建不同的资源&#xff0c;项目里的成员都可以看得到&#xff0c;同时也不能互相随便修改数据。所以需要一些组的权限控制。 1.模型和模型荚是公用的&#xff0c;没有做用户区分&#xff0c;也没…

学计算机的可以做哪些适合自己的兼职?

如果你在做以下的任意一种兼职&#xff0c;我建议你立刻停止&#xff01; 1.单纯体力劳动的兼职 像是发传单、发问卷、送外卖这类兼职只能在短期内提升你的“8小时外收入”的兼职&#xff0c;纯粹是靠时间和体力来换钱&#xff0c;性价比很低&#xff0c;而且不能通过兼职提升…

指定字符串中的一部分将原来的字符串拆分成三部分partition()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 指定字符串中的一部分 将原来的字符串拆分成三部分 partition()函数 选择题 对于以下python代码表述错误的一项是? Str"12345" print("【显示】Str",Str) print("…

Vue2【前端路由的概念与原理、vue-router 的基本用法、vue-router 的常见用法、后台管理案例】

文章目录前端路由的概念与原理1. 什么是路由3. SPA 与前端路由4. 什么是前端路由5. 前端路由的工作方式6. 实现简易的前端路由步骤1&#xff1a;通过 **\<component\>** 标签&#xff0c;结合 **comName** 动态渲染组件。示例代码如下&#xff1a;步骤2&#xff1a;在 Ap…

Xcode Cloud

一、使用Xcode Cloud 的要求 &#xff08;1&#xff09;开发者账户要求 已加入Apple Developer Program向xcode加入Apple IDApp Store Connect上有app 记录或者可以创建一个app记录 &#xff08;2&#xff09;Project和workspace要求 Project或者workspace使用Xcode项目使用…

JavaScript基础语法

JavaScript基础语法 文章目录JavaScript基础语法1.JavaScript的基本认知1.1 JS的介绍与组成1.2 JS代码使用格式2.JavaScript的注释与输入输出语句2.1 JS的注释方法2.2 JS的输入输出语句3.JavaScript的变量3.1 JS的变量初始化3.2 JS的声明变量特殊情况3.3 JS的变量命名规则4.Jav…

Windows版本Anaconda安装教程

1、点击安装包&#xff0c;右键-以管理员身份运行安装文件&#xff0c;如图所示&#xff1a; 2、直接点击next即可 3、接着进入到许可协议的界面&#xff0c;这里点击I agree选项&#xff0c;也就是我同意的意思。 4、接着进入到用户选择的界面&#xff0c;选择all users选项&a…

面试官的灵魂质问—什么是转发与重定向

文章目录 文章目录文章目录[toc]一、什么是HttpServletRequest、HttpServletReSponse&#xff1f;二、Servlet中HttpServletRequest[源码](https://so.csdn.net/so/search?q源码&spm1001.2101.3001.7020)分析获取客户端传递的参数请求转发三、Servlet中HttpServletReSpons…

HTML网页设计结课作业——基于HTML+CSS仿学校官网页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【保姆级】新机器部署Nacos

1、登录服务器&#xff0c;如果非root用户则切root用户 sudo su - 2、在/usr/tmp目录上传nacos安装包 3、将安装包移到/usr/local/目录 mv nacos-server-2.0.3.tar.gz /usr/local/ 4、解压 tar -zxvf nacos-server-2.0.3.tar.gz 5、创建nacos数据库&#xff0c;执行官网SQL建…

vc中调用matlab生成的动态库

开发环境&#xff1a; vs2010 matlab r2016a 步骤一&#xff1a;matlab中生成动态库 创建文本文件 D:\matlabTest\myadd.m&#xff0c;文件内容参看下面代码部分。注意&#xff1a;如果把myadd.m文件直接放在d盘根目录下&#xff0c;matlab中编译生成动态库时&#xff0c;会…

JavaScript--跟随pink老师视频学习版 (2022)

JavaScript一、JavaScript简介1.什么是JavaScript2.JavaScript用途3.浏览器执行JavaScript简介3.JavaScript组成1.ECMAScript2.DOM3.BOM4.JavaScript代码位置1.行内2.内嵌3.外部引入5.JavaScript输入输出语句二、JavaScript变量1.什么是变量2.变量使用3.变量命名规范三、数据类…

DBCO-NH2,DBCO-Amine 实验室 杂氮二苯并环辛炔-胺 1255942-06-3

DBCO(二苯并环辛炔) 的羧基和琥珀酰亚胺酯衍生物&#xff0c;可与带有胺基的生化小分子形成稳定的酰胺键连接。 胺官能团的环辛炔衍生物。环辛炔可用于菌株促进的无铜叠氮化物-炔烃环加成反应。该二苯并环辛炔可在不需要Cu&#xff08;I&#xff09;催化剂的情况下&#xff0c…

TCP/IP网络编程(10) IO函数

在Linux下&#xff0c;一般使用read & write函数完成数据IO&#xff0c;因为Linux下的套接字&#xff0c;可视为文件&#xff0c;其操作方式与文件类似&#xff0c;当套接字分配之后&#xff0c;会为其分配对应的文件描述符。在Windows下&#xff0c;则需要使用recv & …

[oeasy]python0016_编码_encode_编号_字节_计算机

编码(encode) 回忆上次内容 上次找到了字符和字节状态之间的映射对应关系 字符对应着二进制字节二进制字节也对应着字符 这种字节状态是用2位16进制数来表示的hex(n)可以把数字转化为 ​​16进制​​字符串 hexadecimal bin(n)可以把数字转化为 ​​2进制​​字符串 integer …

显示控件——AV输入显示

通过修改变量地址打开或者关闭AV显示&#xff0c;需要硬件支持。 位置信息&#xff1a;控件在工程页面区域的位置 “X”“Y”为控件区域左上角坐标。 “W”“H”为控件区域宽度和高度&#xff0c;单位为像素点。 名称&#xff1a;默认为AVInputView,可以重新设置。 叙述指针…

生产制造管理系统对中小型企业的作用有哪些?

随着企业数字化转型的概念深入人心&#xff0c;传统生产制造企业也渐渐重视起来了。对于资金雄厚的大型生产制造企业而言&#xff0c;企业数字化转型还是比较可以快速适用并且付出行动。而对于很多的中小型企业而言&#xff0c;对于企业数字化转型则没那么重视&#xff0c;甚至…