07_Restful风格接口设计

简介: 07_Restful风格接口设计

RESTful 是一种风格,在RESTful中,一切都被认为是资源,每个资源有对应的URL标识

不是标准也不是协议,只是一种风格。当然你也可以不按照他的风格去写。

1.接口url

传统接口

http://localhost:8080/api/get_list?id=1 查询

http://localhost:8080/api/delete_list?id=1 删除

http://localhost:8080/api/update_list?id=1 更新

RESTful接口

http://localhost:8080/api/get_list/1 查询 删除 更新都可以

RESTful 风格一个接口就会完成增删改差 他是通过不同的请求方式来区分的

查询 GET
提交 POST
更新 PUT PATCH
删除 DELETE

总结一下,在Restful风格接口中,对数据进行什么操作不再由参数决定,而是将每一个资源都定义为一个URL,通过区分请求方式来对数据进行相应操作

Restful版本控制

  1. 启动版本控制。在main.ts中调用app.enableVersioning方法,该方法接收一个配置对象,具体配置如图所示
import { NestFactory } from '@nestjs/core';
import { VersioningType } from '@nestjs/common';  // VersioningType是一个枚举类型
import { AppModule } from './app.module';
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // 开启版本控制
  app.enableVersioning({
    // URI表示通过URL进行版本控制
    type: VersioningType.URI,
  });
  await app.listen(3000);
}
bootstrap();
export declare enum VersioningType {
    URI = 0,  // 通过url进行版本控制
    HEADER = 1, // 通过请求头进行版本控制
    MEDIA_TYPE = 2,
    CUSTOM = 3  // 自定义
}
  1. 使用版本控制(两种方式)
  1. 统一版本控制,将@Controller装饰器中的字符串改为配置对象,version指定对应的版本
import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
} from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
/* 在此处进行版本控制,原来的字符串改为配置对象,新增一个version属性(注意没有v) */
@Controller({
  path: 'user',
  version: '1',
})
export class UserController {
  constructor(private readonly userService: UserService) {}
  @Get()
  findAll() {
    return this.userService.findAll();
  }
}
// 访问http://localhost:3000/v1/user
  1. 单独版本控制。在@Get装饰器下新增一个@Version装饰器,该装饰器接收一个字符串表示方法对应版本。注意此时访问路径仍然是http://localhost:3000/v1/user
import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  Version,
} from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) {}
  
  @Get()
  @Version('1')
  findAll() {
    return this.userService.findAll();
  }
}

以上即实现了一个简易的版本控制

目录
相关文章
|
机器学习/深度学习 JSON 前端开发
RESTful API接口设计规范
近年来移动互联网的发展,前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…),因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信,于是RESTful诞生了,它可以通过一套统一的接口为 Web,iOS和Android提供服务。
3640 1
RESTful API接口设计规范
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
6645 0
【RESTful】RESTful API 接口设计规范 | 示例
|
Java Spring
无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范(二)
无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范(二)
无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范(二)
|
安全 JavaScript Java
无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范(一)
无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范(一)
|
Web App开发 XML JSON
[RESTful web services读书笔记] 接口设计中维持XML和JSON表述的兼容性
分布式的客户端/服务器环境中必然涉及到变更管理,如何维护系统的可扩展性和兼容性? 问题描述:需求是持续变化的,在通常的接口设计中,如何保证服务端XML和JSON表述的变更与现有的客户端保持兼容 解决方案:保持原有的XMl和JSON数据分层结构整体不发生变化,确保客户端按照之前的调用方法可以继续工作 服务端需要把新增的数据元素设计为可选的,以此保持与客户端的兼容性,相对于URI来说,就是URI中添加了新参数时,要继续服务于现有参数,并将新参数视为可选 不要修改删除原有的响应正文表述的数据域  PS: REST架构风格的最主要驱动是分布性和扩展性。
1216 0
|
8天前
|
SQL 缓存 测试技术
构建高性能RESTful API:最佳实践与避坑指南###
—— 本文深入探讨了构建高性能RESTful API的关键技术要点,从设计原则、状态码使用、版本控制到安全性考虑,旨在为开发者提供一套全面的最佳实践框架。通过避免常见的设计陷阱,本文将指导你如何优化API性能,提升用户体验,确保系统的稳定性和可扩展性。 ###
46 12
|
5天前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
8天前
|
存储 API 开发者
深入理解RESTful API设计原则
本文探讨了RESTful API的设计原则,强调了其在现代Web服务中的重要性。通过分析状态表示转移(REST)的概念、核心约束以及最佳实践,本文旨在为开发者提供构建高效、可扩展和易于维护的API的指导。文章还讨论了常见的设计陷阱和如何避免它们,以确保API设计的健壮性和灵活性。
|
10天前
|
JSON 缓存 API
构建高效RESTful API的最佳实践
【10月更文挑战第34天】在数字时代的浪潮中,后端开发扮演着至关重要的角色。本文将带你深入探索如何构建高效的RESTful API,从设计原则到实际编码技巧,再到性能优化和错误处理,我们将一一解锁这些技能。你将学会如何打造一个既优雅又强大的后端服务,让你的应用程序在激烈的市场竞争中脱颖而出。那么,让我们一起踏上这段精彩的旅程吧!
25 2
|
11天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
随着互联网技术的发展,前后端分离成为Web开发的主流模式。本文介绍RESTful API的基本概念、设计原则及在PHP中的实现方法。RESTful API是一种轻量级、无状态的接口设计风格,通过HTTP方法(GET、POST、PUT、DELETE)操作资源,使用JSON或XML格式传输数据。在PHP中,通过定义路由、创建控制器、处理HTTP请求和响应等步骤实现RESTful API,并强调了安全性的重要性。
18 2