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();
  }
}

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

目录
相关文章
|
22天前
|
安全 API 网络架构
深入理解RESTful API设计与实现
【4月更文挑战第5天】在现代Web开发中,构建清晰、可扩展且易于维护的后端服务至关重要。本文将深入探讨RESTful API的设计原则和实践,通过分析其与HTTP协议的协同工作方式,揭示如何构建符合REST架构风格的API。我们将从资源的概念出发,讨论如何使用正确的HTTP方法、状态码以及URI结构来提升API的可用性和性能。同时,文章也将涉及版本控制策略、错误处理以及安全性考虑等方面,为开发者提供一个全面而深入的RESTful API设计指南。
|
机器学习/深度学习 JSON 前端开发
RESTful API接口设计规范
近年来移动互联网的发展,前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…),因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信,于是RESTful诞生了,它可以通过一套统一的接口为 Web,iOS和Android提供服务。
3420 1
RESTful API接口设计规范
|
17天前
|
缓存 网络架构
restful风格是什么风格
restful风格是什么风格
10 0
|
2月前
|
API 开发者 UED
深入理解RESTful API设计原则
【2月更文挑战第9天】 传统的RESTful API设计原则在实际开发中并不是一成不变的,随着技术的发展和应用场景的变化,我们需要不断深入理解RESTful API的设计原则,并结合具体情况进行灵活应用,以更好地满足现代应用的需求。
29 4
|
3月前
|
XML 前端开发 JavaScript
【开发规范】API设计风格 RESTful API
【1月更文挑战第16天】【开发规范】API设计风格 RESTful API
【开发规范】API设计风格 RESTful API
|
3月前
|
JSON 数据格式
基于RestFul风格编程示例
基于RestFul风格编程示例
28 0
|
XML JSON 安全
RESTful API设计规范
RESTful API设计规范
561 0
RESTful API设计规范
|
9月前
|
XML JSON Java
RESTful设计风格
RESTful设计风格
46 0
|
JSON 安全 数据格式
05 案例:测试框架如何才能支持RESTful风格的接口?
05 案例:测试框架如何才能支持RESTful风格的接口?
|
JSON 前端开发 Java
Restful风格的编程
Restful风格的编程
188 0
Restful风格的编程