首页 > 其他分享 >REST (Representational State Transfer) API详解和应用

REST (Representational State Transfer) API详解和应用

时间:2024-05-31 19:03:55浏览次数:23  
标签:123 HTTP api Transfer REST Representational API 客户端

REST (Representational State Transfer) API 是一种设计分布式系统和Web服务的架构风格,它遵循一组特定的原则和约束,以确保简洁、一致和可伸缩的交互。REST API 使用HTTP协议来实现客户端和服务器之间的通信,使得任何能够发起HTTP请求的客户端(如浏览器、移动应用、桌面应用)都可以与服务端进行交互。

REST API 的核心原则和组件包括:

  1. 资源(Resources):通过URI(Uniform Resource Identifier)来标识,例如 /users/123 表示用户ID为123的资源。

  2. HTTP 方法(HTTP Methods):使用HTTP方法(GET、POST、PUT、DELETE等)来表示对资源的操作。

    • GET:获取资源。
    • POST:创建新资源。
    • PUT:更新已有资源。
    • DELETE:删除资源。
    • PATCH:局部更新资源。
  3. 状态码(Status Codes):通过HTTP状态码来反馈操作结果,如200表示成功,404表示资源未找到,500表示服务器错误等。

  4. 表示(Representation):资源的表示通常采用JSON或XML格式,客户端和服务器之间交换数据。

  5. 无状态(Statelessness):每次请求都包含完成操作所需的所有信息,服务器不保存任何会话状态。

  6. 缓存(Caching):客户端可以缓存响应,减少不必要的请求。

  7. 统一接口(Uniform Interface):保持接口的一致性,简化客户端的实现。

REST API 的应用:

  1. Web服务:提供给Web应用的数据接口,如社交媒体API,允许用户获取或发布内容。
  2. 移动应用:移动应用通常通过REST API与服务器通信,获取或更新数据。
  3. 微服务架构:在微服务架构中,各个服务之间通过REST API进行通信。
  4. 数据同步:在客户端和服务器之间同步数据,如云同步服务。
  5. API Gateway:大型系统中,API Gateway作为统一入口,通过REST API与后端服务交互。

示例应用:

假设有一个博客系统,我们可以设计如下REST API:

  • 获取所有文章

    GET /api/posts

  • 创建新文章

    POST /api/posts
    Content-Type: application/json
    {
    “title”: “Example Post”,
    “body”: “This is an example blog post.”
    }

  • 获取特定文章

    GET /api/posts/123

  • 更新文章

    PUT /api/posts/123
    Content-Type: application/json
    {
    “title”: “Updated Post Title”,
    “body”: “The updated content.”
    }

  • 删除文章

    DELETE /api/posts/123

这些API遵循REST原则,使用HTTP方法来表示对资源的操作,并返回JSON格式的数据。

标签:123,HTTP,api,Transfer,REST,Representational,API,客户端
From: https://blog.csdn.net/liuzk423/article/details/139273808

相关文章

  • rest-api设计风格
    rest-api设计风格 规则:1)只能使用http-POST方法;2)所有请求参数必须是json格式;单表CRUD举例:danwei(资源):计量单位1)查询POST http://127.0.0.1:1234/danwei/selectbody:查询where条件2)新增 POSThttp://127.0.0.1:1234/danwei/insertbody:要新增的数据3)修改POST htt......
  • 自己实现dubbo参数校验(类似RestFul 参数校验)
    1.场景:因为工作中经常需要做参数校验,在springboot项目中使用@Valid+@NotNull、@NotBlank…注解开发API接口非常丝滑,相反在开发RPC接口时却还是需要编写大量的参数判断,严重影响主业务流程的开发(公司目前用的是Dubbo2.7.2)且代码整洁度、风格都受到了挑战。基于以上原因萌生了写一......
  • Learning Transferable Visual Models From Natural Language Supervision
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!Proceedingsofthe38thInternationalConferenceonMachineLearning,PMLR139,2021.  Abstract 1.IntroductionandMotivatingWork 2.Approach 2.1.CreatingaSufficientlyLargeDataset ......
  • 【DRF-08】rest-framework之解析器
    1.解析器的作用根据请求头content-type选择对应的解析器对请求体内容进行处理。有application/json,x-www-form-urlencoded,form-data等格式,可以自己自行配置支持或者不支持哪种格式,一般在实际的生产环境中用json一种数据格式进行数据交互就够了,如果需要form-data来进......
  • 【DRF-07】rest-framework之版本
    1.基于url的get传参方式(不推荐)1.1:通过自定义版本控制类,获取版本fromdjango.shortcutsimportrender,HttpResponsefromrest_framework.viewsimportAPIViewclassParamVersion(object):defdetermine_version(self,request,*args,**kwargs):version......
  • 在Spring Boot应用中使用RestTemplate类发送不同的HTTP GET请求(带请求头、不带请求头)
    原文链接:https://www.cnblogs.com/windyWu/p/16872871.html在本文中,你将学会在SpringBoot应用中使用RestTemplate类发送不同的HTTPGET请求。简单GET请求发送GETHTTP请求,可以使用getForObject()或getForEntity()方法。如下示例,使用getForObject()方法获取JSON字符串形式的用......
  • LiT: Zero-shot transfer with locked-image text tuning
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!ProceedingsoftheIEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR),2022 Abstract 1.Introduction 2.Relatedwork 3.Methods 3.1.Contrastivepre-training 3.2.C......
  • Nginx(openresty) 通过lua结合Web前端 实现图片,文件,视频等静态资源 访问权限验证,进行
    1本文系统环境:安装openresty(nginx),可参考:test@ubuntuserver:~$cat/etc/os-releasePRETTY_NAME="Ubuntu24.04LTS"NAME="Ubuntu"VERSION_ID="24.04"VERSION="24.04LTS(NobleNumbat)"VERSION_CODENAME=nobleID=ubuntuID_LIK......
  • 再次学习History.scrollRestoration
    之前在react.dev的源代码中了解到了这个HIstory的属性,当时写了一篇笔记来记录我对它的理解,现在看来还是一知半解。所以今天打算重新学习一下这个属性,主要从属性以及所属对象的介绍、使用方法,是否开启标准这几个方面来简单展开。什么是scrollRestorationscrollRestoration是一个......
  • centos7.9安装openrestry
    简介:openrestry是一个与lua脚本结合的高性能服务器一:根据官网下载安装包https://openresty.org/cn/linux-packages.html二..配置环境exportPATH=/usr/local/openresty/nginx/sbin:$PATH默认安装后的80端口会被开放,查看并杀死netstat-lnpt|grep80kill-9pid 三.简......