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提供服务。
3635 1
RESTful API接口设计规范
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
6442 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
|
3天前
|
存储 安全 API
深入理解RESTful API设计原则
本文旨在探讨RESTful API设计的基本原则和最佳实践,帮助开发者构建高效、可维护的Web服务。通过分析REST架构的核心概念,如资源、统一接口、无状态通信等,本文将指导读者如何设计符合REST原则的API,以及如何处理常见的设计挑战,如版本控制、错误处理和安全性问题。
|
5天前
|
存储 缓存 API
深入理解RESTful API设计原则
【10月更文挑战第28天】 在现代软件开发中,RESTful API已经成为了前后端分离架构下不可或缺的一部分。本文将探讨RESTful API的核心设计原则,包括资源导向、无状态性、统一的接口以及可缓存性等关键概念,并通过实例解析如何在实际应用中遵循这些原则来设计高效、可扩展的API。我们将深入了解REST架构风格的理论基础,并讨论其对提升系统互操作性和简化客户端实现的重要性。
27 3
|
6天前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
23 3
|
7天前
|
前端开发 关系型数据库 API
深入浅出后端开发——从零到一构建RESTful API
本文旨在为初学者提供一个关于后端开发的全面指南,特别是如何从零开始构建一个RESTful API。我们将探讨后端开发的基本概念、所需技术栈、以及通过实际案例展示如何设计和实现一个简单的RESTful API。无论你是完全的新手还是有一定编程基础的开发者,这篇文章都将为你提供实用的知识和技巧,帮助你在后端开发的道路上迈出坚实的一步。
|
7天前
|
XML API 网络架构
深入理解RESTful API设计原则与实践
【10月更文挑战第26天】在数字化浪潮中,API(应用程序编程接口)成为连接不同软件组件的桥梁。本文将深入浅出地探讨如何根据REST(Representational State Transfer)原则设计高效、易于维护和扩展的API,同时分享一些实用的代码示例,帮助开发者构建更加健壮和用户友好的服务。