我想用以下场景的适当方法设计我的休息端点.
有一个小组.每个组都有一个状态.管理员可以激活或取消激活该组.
我应该将我的终点设计为
PUT /groups/api/v1/groups/{group id}/status/activate
Run Code Online (Sandbox Code Playgroud)
要么
PATCH /groups/api/v1/groups/{group id}
with request body like
{action:activate|deactivate}
Run Code Online (Sandbox Code Playgroud) HTTP协议中的PUT,POST和PATCH方法有什么区别?
我有一个包含许多字段的模型'MyModel',我想使用PATCH方法更新字段'status'.我正在使用基于类的视图.有没有办法实现PATCH?
我正在为我的应用程序设计REST端点,我需要为一些端点使用PATCH.所有支持HTTP/1.1的浏览器都能支持PATCH吗?
PATCH在Backbone.js中保存模型属性时执行请求的正确方法是什么?
几天以来,我一直在努力研究如何在Go REST API中继续使用PATCH请求,直到我找到一篇关于使用指针和omitempty标记的文章,我已经填充并且工作正常.很好,直到我意识到我仍然需要构建一个UPDATESQL查询.
我struct看起来像这样:
type Resource struct {
Name *string `json:"name,omitempty" sql:"resource_id"`
Description *string `json:"description,omitempty" sql:"description"`
}
Run Code Online (Sandbox Code Playgroud)
我期待一个PATCH /resources/{resource-id}包含这样一个请求体的请求:
{"description":"Some new description"}
Run Code Online (Sandbox Code Playgroud)
在我的处理程序中,我将以Resource这种方式构建对象(忽略导入,忽略错误处理):
var resource Resource
resourceID, _ := mux.Vars(r)["resource-id"]
d := json.NewDecoder(r.Body)
d.Decode(&resource)
// at this point our resource object should only contain
// the Description field with the value from JSON in request body
Run Code Online (Sandbox Code Playgroud)
现在,对于正常UPDATE(PUT请求)我会这样做(简化):
stmt, _ := db.Prepare(`UPDATE resources …Run Code Online (Sandbox Code Playgroud) 我无法理解为什么PATCH在PUT不安全的地方.也就是幂等部分 - 如果我更新资源的一个字段,那么该字段在更新后是否会返回相同的值?
我正在尝试Patch使用HttpClientin dotnet核心创建一个请求.我找到了其他方法,
using (var client = new HttpClient())
{
client.GetAsync("/posts");
client.PostAsync("/posts", ...);
client.PutAsync("/posts", ...);
client.DeleteAsync("/posts");
}
Run Code Online (Sandbox Code Playgroud)
但似乎无法找到Patch选项.可以Patch用HttpClient?做请求吗?如果是这样,有人能告诉我一个如何做的例子吗?
我尝试def patch():在我的方法中使用一种方法webapp2.RequestHandler来支持部分资源更新,但后来发现在webapp2.py中冻结了允许的方法:
allowed_methods = frozenset(('GET', 'POST', 'HEAD', 'OPTIONS', 'PUT',
'DELETE', 'TRACE'))
Run Code Online (Sandbox Code Playgroud)
在Google AppEngine上部署时,如何扩展webapp2.RequestHandler或修改WSGIApplication类以允许PATCH HTTP方法?
我正在服务器端实现'PATCH'以部分更新我的资源.
假设我没有在JSON请求/响应中公开我的SQL数据库模式,即JSON中的键和表的列之间存在单独的映射,如何在SQL中给出JSON的最佳数据,以便最好地确定要更新的列.部分更新?
例如,假设我的表有3列:col_a,col_b和col_c,并且JSON键与表列之间的映射是:a -> col_a, b -> col_b, c -> col_c.鉴于JSON-PATCH数据:
[
{"op": "replace", "path": "/b", "value": "some_new_value"}
]
Run Code Online (Sandbox Code Playgroud)
以编程方式将此部分更新应用于col_b与我的资源相对应的表的最佳方法是什么?
当然,我可以在keys_to_columns某个地方的dict 中对这些映射进行硬编码,并且根据每个请求patch_data,我可以这样做:
mapped_updates = {keys_to_columns[p['path'].split('/')[-1]]: p['value'] for p in patch_data}
Run Code Online (Sandbox Code Playgroud)
然后用于mapped_updates构建用于数据库更新的SQL语句.如果上面抛出一个KeyError我知道请求数据无效并且可以扔掉它.我需要为我拥有的每个表/资源执行此操作.
我想知道是否有更好的方法.
http-patch ×10
rest ×5
http ×3
api ×2
http-put ×2
python ×2
backbone.js ×1
django ×1
go ×1
http-method ×1
http-post ×1
json ×1
sql ×1
webapp2 ×1