客户端向 SuperMap iServer 服务器发送 HTTP 请求时,SuperMap iServer 服务器会根据请求的类型返回响应结果,通过响应结果中的状态码,客户端可以得知请求的处理情况。例如:是否成功、出错的原因,等等。
HTTP 协议定义了各个状态码代表的意义,官方定义有41种状态码,分5类,如下:
SuperMap iServer 主要用到其中的2xx 系列、4xx 系列和5xx 系列,各个状态码的含义如下表所示:
状态码值 | 含义 |
200 |
表示服务器成功执行了客户端的 HTTP 请求。 如果请求的类型是 GET 说明获取资源成功,是 PUT 说明修改资源成功,是 DELETE 说明删除资源成功,是 HEAD 说明获取资源的元数据成功。 |
201 |
表示服务器按客户端的请求成功创建了一个新资源。对应的请求类型是 POST 或 PUT。 注意,这时返回的信息中会包含 Location 报头,指向新创建资源的规范 URI。 |
303 |
表示服务器将客户端的请求重定向到另一个 URI,要完成请求必须进行进一步操作。 例如,在访问 image 资源时,redirect 参数为 true(默认值)则表示重定向图片,URI 如下: http://supermapiserver:8090/iserver/services/map-world/rest/maps/World Map/image.png?center={"x":103,"y":34}&scale=0.00000002&redirect=true HTTP 响应的状态码为 303,并重定向到图片地址。 |
400 |
表示客户端的请求参数不合法或没有表达足够的信息。 例如,对 layers 资源执行 POST 操作创建一个新的图层,即 layer 资源,但如果没有在请求体里给出创建新图层必须的参数,即图层的描述信息,这时就会得到响应码400。 |
401 |
表示因为安全的原因,导致对资源的操作没有完成。 例如,删除数据集,可以对 dataset 资源执行 DELETE 请求(包含参数),URI 如下: http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries.rjson 而创建新图层需要管理员权限,假设某个客户端没有这个权限,当它执行以上请求时,就会得到响应码401。 |
404 |
表示客户端请求的资源不存在,即 URI 无效。 例如,在获取名为 World 的 map 资源时,对如下 URI 执行 GET 请求: http://supermapiserver:8090/iserver/services/components-rest/rest/maps/World.json 正常返回响应码200,说明成功获取资源;但当服务器(server)里根本没有名为 World 的 map 资源时,就会返回响应码404,表示资源无效。 |
405 |
表明资源不支持该操作。 例如:对 maps 资源执行 PUT 和 DELETE 请求会得到响应码405,表示 maps 资源对 PUT 和 DELETE 不支持。 |
406 |
表示资源不支持客户端请求的表述格式(参见 SuperMap iServer REST API 输出格式介绍)。 例如,在获取 maps 资源时,对如下 URI 执行 GET 请求: http://supermapiserver:8090/iserver/services/components-rest/rest/maps.bmp 因为 maps 不是图片资源,所以不支持 BMP 的表述格式,这时就会得到响应码406。 |
500 |
表示服务器端发生非预期情况,导致请求没有完成。 |