`
weiqingfei
  • 浏览: 317331 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

设计RESTful的API

 
阅读更多

 一般的简单操作,基本上都能简化为一下几种

方法 URL 类方法 备注
GET /posts index 一覧
GET /posts?key1=xxx&key2=xxx index 检索
GET /posts/create create 作成画面取得
POST /posts store 作成
GET /posts/{:id} show 取得特定资源
GET /posts/{:id}/edit edit 更新画面取得
PUT /posts/{:id} update 更新特定资源
DELETE /posts/{:id} destroy 削除特定资源

 

 

如果检索项目特别多,URL放不下的情况,最方便的做法就是直接POST

方法 URL 类方法 备注
GET /posts/searchs/create index 检索画面
POST /posts/search search

检索结果

这儿search已经是表示动作了

 

但是上面看起来很不RESTful,那么我们把检索条件也作为资源提交上去呢?类似于下面这种

方法 URL 类方法 备注
GET /posts/searchs/create create 検索画面
POST /posts/searchs store 検索条件提交
GET /posts/searchs/{:id} show 检索结果

感觉很别扭,主要是检索结果这项,如果把检索条件作为资源的话,那么第三项返回的应该是特定的检索条件才对,

为什么会是posts的检索结果呢?

 

变通一下,如果这样呢?

 

方法 URL 类方法 备注
GET /posts/searchs/create create 検索画面
POST /posts/searchs store 検索条件提交
GET /posts?search_id=xxx show 检索结果

这样看起来还不错,不过处理起来确实麻烦了很多,如果不是有洁癖的话,直接用POST就比较好了。

 

对于删除多个资源的问题,也可以用同样的方法(实际上这儿本质是处理选择项,至于后续是删除还是其他处理,都没关系)。

方法 URL 类方法 备注
POST /posts/selections store 选择项提交
GET /posts/selections/xxx show 取得选择项

DELETE /posts/selections/xxx destroy 删除选择的posts

上面最后一项同样不RESTful,因为按照语义,这个应该是删除的上面提交的那个选择数据,而不是具体的posts

所以最后一项也可以改成这个?

 

方法 URL 类方法 备注
POST /posts/selections store 选择项提交
GET /posts/selections/xxx show 取得选择项

DELETE /posts?selection_id=xxx destroy 删除选择的posts

 

实际上,对于普通的多页面系统,只能用GET和POST方法,那么其他方法要么就放到URL里,要么就放到Form的字段里。

而且,GET以外的所有方法,其实都是POST,所以,对于DELETE其实最终还是POST,那么就直接用POST好了

方法 URL 类方法 备注

POST

(用form项目标识为DELETE)

/posts destroy 删除选择的posts

分享到:
评论

相关推荐

    RESTFul API 接口说明

    RESTful API 设计的核心理念在于其简洁性和直观性,通过定义一组简单的规则,使得开发人员能够快速地理解和使用这些接口。 #### 二、RESTful API 动词与方法 RESTful API 中最基础的概念之一是HTTP动词,它们代表...

    RESTful API 设计最佳实践

    总之,设计RESTful API时,重点在于创建清晰、一致和符合HTTP标准的接口,同时考虑到易用性和可维护性。通过遵循这些最佳实践,你可以创建出强大且易于使用的API,为开发者提供优秀的用户体验。

    RESTFUL API设置最佳实

    ### RESTful API 设计最佳实践 #### 一、引言 随着互联网技术的发展,Web 应用变得越来越复杂,为了支持这些应用的功能扩展和服务交互,API 的设计变得尤为重要。RESTful API 是一种基于 HTTP 协议的应用程序编程...

    RESTful API设计规范

    ### RESTful API设计规范详解 #### 一、RESTful简介 RESTful是一种广泛应用于Web服务的设计风格,全称为Representational State Transfer(表述性状态转移)。它并非一项具体的技术标准,而是一系列设计原则和约束...

    restful 接口开发规范(RESTfulAPIdesignguide)

    具体来说,设计RESTful API时,应当按照以下要点来操作: 1. URI设计:每一个URI代表一种资源,应采用名词并以复数形式命名。使用小写字母,并用连字符'-'来替代下划线'_',比如:***。 2. 使用HTTP方法:通过HTTP...

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    描述:本实验使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验,涵盖了数据库设计、 Maven依赖管理、Restful API和WebService API的实现等方面。 标签:spring boot、mybatis、...

    RESTful API设计基础知识

    4. 设计RESTful API的步骤: - 规划数据集:识别需要暴露的资源及其关系。 - 划分资源:为每个资源分配合适的URI。 - 设计接口:确定使用哪些HTTP方法以及它们的语义。 - 客户端和服务器的表示设计:考虑如何在...

    restful api设计

    RESTful API 设计 RESTful API 设计是一种架构风格,而不是严格的标准,它有很大的灵活性。它描述了一个架构样式的网络系统,RESTful 架构将服务器成前端服务器和后端服务器两部分,前端服务器为用户提供无模型的...

    RESTFUL-API-设计开发.pptx

    RESTFUL API 设计开发 RESTFUL API 是一种基于 HTTP 协议和 REST 架构策略的简单 Web 服务,包含以下特征:定义了资源的 URI,接受和返回的互联网媒体类型,如 JSON、XML、YAML 等,支持的一系列请求方法,如 POST...

    Hands-On RESTful API Design Patterns and Best Practices

    书中可能会讨论如何在微服务环境中设计RESTful API。 10. 设计模式:在RESTful API的设计和实现中,有一些常见的模式,如CRUD模式、资源嵌套、集合过滤等,书中可能会详细讲解这些模式的使用和应用场景。 由于本书...

    c c++实现http服务 c c++开发restful api服务

    本文将深入探讨如何使用C和C++来实现HTTP服务,并开发RESTful API服务器。 首先,HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器。它是一个基于请求与...

    RestfulApi服务端.zip

    RestfulApi服务端是现代Web应用开发中常用的一种设计风格,它基于HTTP协议,通过不同的HTTP方法(GET、POST、PUT、DELETE等)来实现资源的获取、创建、更新和删除操作,使得API接口更加清晰、简洁且易于理解。...

    RestFul API 案例

    以上就是关于RESTful API的基本知识点,结合提供的"RestFul API.pptx"和"TEST.zip"文件,你可以深入学习具体的案例,了解如何设计和实现一个RESTful API。实践中,我们通常会用到如Spring Boot这样的框架来快速构建...

    RESTful API 设计最佳实践1

    在设计RESTful API时,首要目标是遵循Web标准,确保API的开发者友好性和可探索性。这意味着API应使用HTTP协议的固有方法(GET、POST、PUT、PATCH和DELETE)来操作资源,这符合HTTP方法的语义。资源通常由名词表示,...

    RESTfulAPI设计:RESTfulAPI设计基础.docx

    RESTfulAPI设计:RESTfulAPI设计基础.docx

    Python语言开发RESTful API指南

    在当今信息技术飞速发展的时代,RESTful ...掌握这些知识点对于设计和实现一个健壮、安全且易于使用的RESTful API至关重要。此外,通过实践经验和持续学习,开发者可以不断提升在Python环境下开发RESTful API的能力。

Global site tag (gtag.js) - Google Analytics