跳到主要内容

1 篇博文 含有标签「rails」

查看所有标签

· 阅读需 3 分钟

在更新接口联调时,前端还在纠结入参是传全部还是只传改动过的值?

后端服务还在 get post 一把梭?

http 早就为开发者设计好更新接口的策略了:

  • patch部分更新,没带的参数就忽略

  • put全量覆盖,没带的参数就删除或置空

理论上增删改查应该去根据 http 动词选择更新策略,但是目前大多数的后端设计仍然是一个接口一个接口手写

再次夸赞 Rails,非常舒服的 RESTful 接口路由定义

Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resource :session, only: [:create]
resources :items, only: [:create, :index, :destroy]
resource :me, only: [:show]
# 也支持单独定义接口与方法的映射
# post :validation_codes, to: 'validation_codes#create'
end
end
end

在 Rails 中,路由资源提供了 HTTP 动词和 URL控制器操作之间的映射。按照惯例,每个操作还映射到数据库中的特定 CRUD 操作。路由文件中的单个条目,例如我们在 routes 中定义了下面的路由:

resources :photos

Rails 会在应用程序中创建如下 7 种不同的路由,所有路由都映射到 Photos 控制器:

HTTP VerbPathController#ActionUsed for
GET/photosphotos#indexdisplay a list of all photos
GET/photos/newphotos#newreturn an HTML form for creating a new photo
POST/photosphotos#createcreate a new photo
GET/photos/:idphotos#showdisplay a specific photo
GET/photos/:id/editphotos#editreturn an HTML form for editing a photo
PATCH/PUT/photos/:idphotos#updateupdate a specific photo
DELETE/photos/:idphotos#destroydelete a specific photo