作者回复: 我接触的领域里options用的比较少,可能有点孤陋寡闻了。
作者回复: 总结的非常好。
问题里的“请求头如何设计”,意思是说相关的curd参数应该放在什么地方,比如用query参数或者是字段,只是一个提示,不是要必须如何如何做。
作者回复: 就是个使用的习惯和约定,就像是红绿灯,不是强制要求你必须遵守,但大家都按照这样做沟通起来顺畅。
要理解协议的含义,要求你遵守,但不强制。
作者回复: 请求方法的设计思想非常好,动词可以表示各种操作,所以非常适合RESTful。
作者回复: options请求会在allow字段里列出可以对资源实施的操作方法,比如有的资源只支持get,有的只支持post/delete。
所以有的时候回先发一个options,来确定应该如何操作资源。
不过这个方法用的很少,其实没太大用处,因为即使资源不支持某种方法,直接返回一个405或者其他的状态码就可以了。
作者回复: 在RESTful设计的时候,要考虑动作对服务器内部状态的影响。
这个比较理论,一般不太需要关心。
作者回复: 慢慢来。
作者回复: 任何请求报文都可以带请求体,与方法无关,老的工具可能对协议支持的不好。
后面你理解的对,请求方法最终如何处理还是要依赖于服务器,如果愿意,服务器也可以用get来上传数据,用post获取数据,现在的get/post都是依据协议标准来执行,所以是get获取post上传。
作者回复: 不客气。
作者回复: 这块我基本没用过,它也不是http标准里面的,抱歉了。
作者回复: 测试用的URI“10-2”不支持存储数据,所以post的数据只能在当次请求生效。
另外发现这两测试uri有小bug,已经修复,请及时git pull更新。
作者回复: 下一讲里面的url编码就会谈到。
uri里面有些字符是不允许出现的,需要编码和解码,而+正好就被解码成了空格。
你刚才也说了,会用到encodeURI这样的函数。
作者回复: 幂等是指客户端操作对服务器的状态没有产生改变,虽然报文内容变了,但服务器还是没有变化。
可以再对比一下delete和post。
作者回复: 我看Nginx源码,是不支持options的。
put的幂等是RFC定义的,当然你要实现出非幂等的功能也是可以的。
作者回复: 赞!
作者回复: good。
作者回复: 从标准的定义来讲,403是表示有文件但禁止访问。
但服务器也可以不管有没有都返回403,因为服务器是个黑盒子,我们无法判断后面到底是什么情况。
作者回复: 可能是发送的http请求头有误,可参考一下第9讲,注意请求行后要有空行。
作者回复: 我用的是Visio,不过也用的很一般,画的不是太好,见笑了。