概念

RESTful API设计 最佳实践。

设计HTTP和RESTful API可能很棘手,因为没有官方和强制标准。基本上,有许多方法可以实现API,但其中一些已在实践中得到证实,并且已被widley采用。这篇文章介绍了构建HTTP和RESTful API的最佳实践。我们将讨论URL结构,HTTP方法,创建和更新资源,设计关系,有效负载格式,分页,版本控制等等。

RESTful API设计。 坚果壳中的最佳实践。

更新2018年

我完全重写了这篇文章。我重新访问并扩展了现有的部分并添加了许多新的部分:HTTP方法和状态代码的新概述,PATCH,清除PUT和POST的语义,data字段,设计关系,REST与RPC风格的API,可演化性,版本控制方法,基于键集分页,JSON:API,JSON:API启发的有效负载格式。…

        

API设计指南

大多数现代Web应用程序都公开了客户端可用于与应用程序交互的API。精心设计的Web API应旨在支持:

  • 平台独立性无论API如何在内部实施,任何客户端都应该能够调用API。这需要使用标准协议,并且具有客户端和Web服务可以就要交换的数据格式达成一致的机制。
  • 服务发展Web API应该能够独立于客户端应用程序进化和添加功能。随着API的发展,现有的客户端应用程序应该继续运行而无需修改。应该可以发现所有功能,以便客户端应用程序可以完全使用它。

本指南介绍了在设计Web API时应考虑的问题。

REST简介

2000年,Roy Fielding提出了Representational State Transfer(REST)作为设计Web服务的架构方法。REST是一种用于构建基于超媒体的分布式系统的架构风格。REST独立于任何底层协议,不一定与HTTP绑定。但是,大多数常见的REST实现都使用HTTP作为应用程序协议,本指南重点介绍如何为HTTP设计REST API。

REST over HTTP的主要优点是它使用开放标准,并且不会将API或客户端应用程序的实现绑定到任何特定实现。例如,REST Web服务可以用ASP.NET编写,客户端应用程序可以使用任何可以生成HTTP请求和解析HTTP响应的语言或工具集。

以下是使用HTTP的RESTful API的一些主要设计原则:

  • REST API是围绕资源设计的,资源是客户端可以访问的任何类型的对象,数据或服务。
  • 资源具有
        

HTTP Referer 教程

HTTP 请求的头信息里面,Referer 是一个常见字段,提供访问来源的信息。

很多开发者知道这个字段,但是说不清它的具体细节。本文详细介绍该字段。

一、Referer 的含义

现实生活中,购买服务或加入会员的时候,往往要求提供信息:"你从哪里知道了我们?"

常用HTTP状态码解释

超文本传输​​协议的一部分- HTTP / 1.1
RFC 2616 Fielding,et al。

10状态码定义

下面描述了每个状态代码,包括它可以遵循哪种方法以及响应中所需的任何元信息的描述。

10.1信息1xx

此类状态代码表示临时响应,仅包含Status-Line和可选标头,并以空行终止。此类状态代码没有必需的标头。由于HTTP / 1.0没有定义任何1xx状态代码,服务器不得向HTTP / 1.0客户端发送1xx响应,除非在实验条件下。

客户必须准备好在常规响应之前接受一个或多个1xx状态响应,即使客户端不期望100(继续)状态消息。用户代理可以忽略意外的1xx状态响应。

代理必须转发1xx响应,除非代理与其客户端之间的连接已关闭,或者除非代理本身请求生成1xx响应。(例如,如果是

代理在转发请求时添加“Expect:100-continue”字段,然后它不需要转发相应的100(继续)响应。)…

进阶必备的网络基础

前言

在不那么遥远的一些年以前,一个在江湖中行走的前端,只需要了解“前端三剑客”就足以找到一份工作。很多前端只限于 CSS,HTML、JS,网络基础,数据结构之类的都不甚了解。不过这个时期的前端也是最受鄙视的时期,这个时期前端的大量工作依赖于后端,且不需要动画效果和交互效果。

现如今前端圈已经发生翻天覆地的变化, Vue,React,ES6,HTML5,CSS3,Webpack,PostCss 等技术层出不穷。作为一个有格局的前端,对网络基础定是要了然于心的。

如果你对网络基础还不太了解,以下的内容可以给你提供一个思路;如果你对此已经了然于心,以下的内容烦请批评指正。

入题

任何事物的诞生,最初都是服务于极少数人的。渐渐地被这极少数人推而广之,我们大众就开始接触了解它,互联网是如此,麻将亦是如此。不管是互联网还是麻将,它们都增强了人与人之间的交流。接下来我会讲以下内容:

  1. 五层因特网协议栈

  2. HTTP 与 HTTPS 的区别

  3. TCP/IP 协议

  4. 三次握手和四次挥手

  5. DNS 域名解析

  6. 五类 IP 地址

  7. 跨域的原因及处理方式

  8. 正向代理和反向代理

  9. CDN 带来的性能优化

  10. HTTP 强缓存&协商缓存

五层因特网协议栈 TOP

五层因特网协议栈这个知识点对你来说或许有点枯燥,不过当你对这个协议栈有了一个初步的了解之后,你之前的某些疑问就会很明朗。

一、应用层

            

你猜一个 TCP 连接上面能发多少个 HTTP 请求

一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么,大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来。但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?

要搞懂这个问题,我们需要先解决下面五个问题:

  1. 现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?
  2. 一个 TCP 连接可以对应几个 HTTP 请求?
  3. 一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?
  4. 为什么有的时候刷新页面不需要重新建立 SSL 连接?
  5. 浏览器对同一 Host 建立 TCP 连接到数量有没有限制?

先来谈谈第一个问题:现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?

在 HTTP/1.0 中,一个服务器在发送完一个 HTTP