RESTful基本要求

ops/2024/9/24 10:15:44/

文章目录

  • RESTful -Representational State Transfer
    • 1 什么是RESTful
    • 2 RESTful的特征
    • 3 如何设计符合RESTful 特征的API

RESTful -Representational State Transfer

1 什么是RESTful

  • 资源 (Resources)

    网络上的一个实体,或者说是网络上的一个具体信息,并且每个资源都有一个独一无二得URI与之对应;获取资源-直接访问URI即可

  • 表现层(Representation)

    如何去表现资源 - 即资源得表现形式;如HTML , xml , JPG , json等

  • 状态转化(State Transfer)

    访问一个URI即发生了一次 客户端和服务端的交互;此次交互将会涉及到数据和状态得变化

    客户端需要通过某些方式触发具体的变化 - HTTP method 如 GET, POST,PUT,PATCH,DELETE 等

2 RESTful的特征

  • 每一个URI代表一种资源

  • 客户端和服务器端之前传递着资源的某种表现

  • 客户端通过HTTP的几个动作 对 资源进行操作 - 发生‘状态转化’

3 如何设计符合RESTful 特征的API

  • 协议 - http/https

  • 域名

    域名中体现出api字样,如

    https://api.example.com

    or

    https://example.org/api/

  • 版本:

    https://api.example.com/v1/

  • 路径 -

    路径中避免使用动词,资源用名词表示,案例如下

    https://api.example.com/v1/users
    https://api.example.com/v1/animals
    
  • HTTP动词语义

    请求动词说明
    GET(SELECT)从服务器取出资源(一项或多项)
    POST(CREATE)在服务器新建一个资源
    PUT(UPDATE)在服务器更新资源
    DELETE(DELETE)从服务器删除资源

    具体案例如下:

    请求动作请求资源说明
    GET/zoos列出所有动物园
    POST/zoos新建一个动物园
    GET/zoos/ID获取某个指定动物园的信息
    PUT/zoos/ID更新某个指定动物园的信息
    DELETE/zoos/ID删除某个动物园
    GET/zoos/ID/animals列出某个指定动物园的所有动物
    DELETE/zoos/ID/animals/ID删除某个指定动物园的指定动物
  • 巧用查询字符串

    ?type_id=1:指定筛选条件
    ?limit=10:指定返回记录的数量
    ?offset=10:指定返回记录的开始位置。
    ?page=2&per_page=100:指定第几页,以及每页的记录数。
    
  • 状态码

    用HTTP响应码表达 此次请求结果,例如

    响应码说明
    200 OK - [GET]服务器成功返回用户请求的数据
    404 NOT FOUND用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
    500 INTERNAL SERVER ERROR服务器发生错误

http://www.ppmy.cn/ops/105194.html

相关文章

Elasticsearch 介绍

1、课程介绍 1.1 ES 8.x 演化进程 版本号发布日期多少个次要版本迭代历时8.02022年2月11日?至今7.02019年4月11日17个次要版本34个月6.02017年11月15日8个次要版本17个月5.02016年10月27日6个次要版本13个月 2、Elasticsearch 是什么 2.1 概念 2.1.1 标准定义 …

【LLM模型微调】LLMs-微调经验-LLaMA微调指南v7.0

【导读】:本文是LLM模型微调第七篇,分享Meta于20240807的开源三篇文章:Methods for adapting large language models,To fine-tune or not to fine-tune,How to fine-tune: Focus on effective datasets。 【#】LLaMA…

Node.js中sqlite3的db.run、db.get和db.all方法深入解析

在Node.js中,sqlite3是一个广受欢迎的轻量级数据库库,它提供了一个简洁的API来与SQLite数据库进行交互。本文将深入解析sqlite3库中的db.run、db.get和db.all方法,包括它们的API原型定义和相应的代码示例。 一、sqlite3简介 sqlite3是一个为…

【Python基础】字典类型

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、Python 字典类型2.1 访问字典里的值2.2 修改字典2.3 删除字典元素2.4 字典键值的特性2.5 遍历字典…

docker部署project-exam-system

使⽤docker部署project-exam-system 1. 背景,在⼀台主机之内,实现容器的编排,发布考试系统 2. 环境准备 1. docker 1. vim /etc/docker/daemon.json 2. docker-compos 3. 普通的部署 1. 镜像 1. 前端:nginx latest服务 1. 拉取…

yolo8 目标检测、鉴黄

省流 看前必读 别浪费时间 :本文只是一个记录,防止自己下次被改需求时浪费时间,在这里就随意的写了一下文章记录整个步骤,但是文章想必肯定没有对应的教程讲的详细,该文章只适合想要快速按照步骤完成一个简单的 demo 的…

【wsl2】从C盘迁移到G盘

参考大神 C盘的ubuntu22.04 非常大,高达30g 迁移后就只有几百M了: 右键有一个move没有敢尝试 迁移过程 Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved.Install the latest PowerShell for new features and improveme…

c++vscode多文件实现通讯录管理系统

cvscode多文件实现通讯录管理系统 作为c入门级别的实战项目,此通讯管理系统项目不仅仅是对c入门阶段学习成果的检验,也是对c基础知识的回顾,体会c在实战制作中的思路,是入门c单文件实现通讯录系统的改进 一、多文件通讯录管理系统简介 系统需…