go 建议:在net/http中添加Client.Put和Client.Patch方法,

3hvapo4f  于 4个月前  发布在  Go
关注(0)|答案(7)|浏览(85)

建议

我建议在net/http包中添加以下功能。
func Put()
func Patch()
func ()Put
func ()Patch
这些功能与已经存在的Post功能类似。

原因

我认为添加Post功能的所有原因也适用于这些功能。此外,Post功能已经存在的事实使得这些功能成为一种自然的扩展,这种方法已经开始但目前尚未完成。

需要由sjtwiv完成的工作

sjtwiv

zhte4eai

zhte4eai1#

这个问题在过去已经提出过并被拒绝了。争论的焦点是我们必须在某个地方划定界限。所以问题是在哪里划定界限。在Post之后?在Put之后?在Patch之后?在Delete之后?在Options之后?在Trace之后?希望是在Spacejump之前。
Get和Head方法很简单,但它们已经不足以满足需求,因为它们不允许你添加请求头。Post和PostForm方法也不让你设置请求头。
我们决定只保留Get、Head和Post这三个已经很方便但经常缺失的方法。
想要设置请求头或者使用不太流行的方法的人可以使用http.NewRequest或者他们自己的助手。
如果你想基于实际使用数据(如火狐遥测 Jmeter 板或Chrome UMA)来证明某个点存在巨大的悬崖,那么这可能是有说服力的。
/cc @tombergan

t0ybt7op

t0ybt7op2#

@bradfitz@tombergan 我在查看遥测数据,但我以前没有使用过这些系统,所以需要一段时间来弄清楚。然而,我已经从谷歌搜索结果的前25个中收集了关于"http动词"和"http方法"的数据。我想这会给我们一个相当好的想法,了解哪些是最广泛学习、知道和使用的。

方法计数
get36
put35
patch21
delete35
post35
connect10
head23
options23
trace13
acl2
baseline-control2
bind1
checkin2
checkout2
copy2
label2
link1
lock2
merge2
mkactivity2
mkcalendar1
mkcol2
mkredirectref1
mkworkspace2
move2
pri1
orderpatch2
propfind2
proppatch2
rebind1
report2
search2
unbind1
uncheckout2
unlink1
unlock2
update2
updateredirectref1
version-control2
spacejump0
owfi6suc

owfi6suc3#

@bradfitz@tombergan 我已经花了几天的时间在Firefox遥测 Jmeter 板网站上爬取所有的数据。到目前为止,我还没有在这个网站上找到这些数据。我不确定它是否在一个受密码保护的区域中,或者我是不是漏掉了什么。如果有人能提供关于如何找到这些数据的建议,我会非常感激。

dly7yett

dly7yett4#

抱歉,我对Firefox和Chrome系统的细节一无所知。

vshtjzan

vshtjzan5#

更新

@bradfitz@tombergan 我正在Mozilla支持和其他论坛中询问,是否有人能指出我所请求的数据或者提供给我访问它的途径。我还在想,你是否认为我上面提供的数据,如果我继续收集和扩展它(例如添加其他搜索引擎如必应、雅虎等,以及/或其他搜索查询“http教程”,“http方法列表”等),可能会产生影响。我也在考虑检查其他语言的标准库中包含的类似功能。我的思路是,匹配其他语言中最常用的功能,会使那些了解该语言并尝试使用Go的人更容易上手,从而增加这些用户的留存率。你觉得这会不会产生影响(这是否有可能赢得你的支持?你认为这会赢得其他人的支持吗)?提前感谢任何回复。

请求更多信息

@tmthrgd@vizee 从你的emoji表情中,我猜你不喜欢这个想法。我在想,你是否愿意详细阐述你的理由,并可能说说什么会让你改变主意。我想要知道这样我才能在这里解决你的担忧,并考虑你在制定未来提案时的观点。提前感谢任何回复。

@OneOfOne 我不太确定你的笑脸emoji是什么意思。你是同意bradfitz的想法,还是认为他的想法很荒谬,或者其他什么意思。我只是想澄清一下大家的立场,这样我就知道该怎么做,或者是否应该继续做下去。提前感谢。

watbbzwu

watbbzwu6#

如果我们重新设计net/http API,那么也许我们应该考虑使这个API以及客户端操作更加通用、更容易。但是现在我们不会为net/http添加新的方法。现在仅仅为了发出一个GET请求就做太多的工作了。而对于PUT/PATCH来说,实际上变化很小。但是也许重新设计所有请求使得它们更容易也会使得PUT/PATCH变得更容易。将这个问题留待最终对net/http进行全面重构时再解决。

j91ykkif

j91ykkif7#

好的,这很有道理。如果有任何我能帮忙的地方,请告诉我。

相关问题