注意文章可能会断更,原文地址 :
knpuniversity.com(https://knpuniversity.com/screencast/rest/intro)
2.HTTP基础
在coding之前我们需要普及一点理论知识!嗨,回来!这些东西并不枯燥而且对于web开发非常重要!告诉你的脑袋,现在开始学习了!
HTTP
我们首先要说的是HTTP:一个英文缩写,其实就是描述客户端给服务端发送一个请求(Request),而我们的服务器对其作出一个响应(Response)。如果你把HTTP想象成一个函数,那么Request就是这个函数的参数,而这个函数return一个Response。就这么简单。
HTTP Request
GET /api/programmers HTTP/1.1
Host: CodeBattles.io
Accept: application/json,text/html
这是一个基础的Request,它有三个需要注意的地方:
1. /api/programmers 请求URI:统一资源标志符(uniform resource identifier)。注意这里在说资源(Resource)。每一个URI对于一个资源都是唯一的,就像你所待在的这个房间的位置。如果有5条URI,那么就可以说有5个资源。
2. GET 是HTTP请求方法,它描述了对这条资源所做的操作。最常的有GET和POST,还可能会遇到DELETE和PUT以及臭名昭著的PATCH,当然还有其他的,但是大多数我们都不用关心。
3. 除了第一行,后面的每一行我们叫做头信息(header)都是由冒号分隔开的格式,示例中有两行,但是客户端可以发送任何东西。考虑到这一点,来看一个POST请求,它可能是这样的。
POST /api/programmers HTTP/1.1
Host: CodeBattles.io
Authorization: Bearer b2gG66D1Tx6d89f3bM6oacHLPSz55j19DEC83x3GkY
Content-Type: application/json
{
"nickname": "Namespacinator"
}
除了表明请求方式为POST,这个请求还增加主体(body)。这个请求有三条header,和上面不同两条,Authorization用于验证,另一条Content-Type则告诉了服务器,请求主体的内容是JSON格式。
HTTP Response
来看一个Response的示例:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, private
{
"nickname": "Namespacinator",
"avatarNumber": 5,
"tagLine": "",
"powerLevel": 25
}
第一个要点是那个200:它表示一切安好,服务器给了我们正常的响应。响应状态码是API重要的组成部分。但也有一些人为此而争论,我们会在后面写项目时看到它为什么重要。
这个Response的头信息告诉了客户端响应内容不应该缓存,其格式为JSON,JSON的主体信息跟在最后。
HTTP令人敬畏但其实也就是这么简单,Got it? 好的,一起继续努力吧!