ApplicationPoolIdentify 在 Windows Server 2008 和 Windows Vista 的 Service Pack 2(SP2)和更高版本的Windows引入的强大的新隔离功能,IIS7.5中首次引用。其它三种包括 LocalService , LocalSystem,NetWorkService。
如果在Windows Server 2008 R2或更高版本的IIS上运行IIS 7.5,则无需执行任何操作即可使用新标识。创建的每个应用程序池,默认情况下,新应用程序池的Identity属性设置为ApplicationPoolIdentity。IIS管理进程(WAS)将创建一个具有新应用程序池名称的虚拟帐户,并默认在此帐户下运行应用程序池的工作进程。
要在Windows Server 2008上运行IIS 7.0时使用此虚拟帐户,必须将创建的应用程序池的Identity属性更改为ApplicationPoolIdentity。
ASP.NET WEB API通过类型HttpRequestMessage和HttpResponseMessage表示的管道处理的请求和响应的消息,定义在System.Net.Http.dll中。
HttpRequestMessage
HttpResponseMessage
HttpContent
ASP.NET WEB API 路由系统
ASP.NET WEB API路由系统中HostedHttpRoute对象通过创建ASP.NET路由系统中的HttpWebRoute对象进行路由解析。 针对约束的检查则依然是ASP.NET WEB API路由系统中的HttpRouteConstraint。
Web Host宿主模式采用的route类型为HttpWebRoute,对应的RouteHandler是HttpControllerRouteHandler对象,提供的HttpHandler类型为HttpControllerHandler。
ASP.NET WEB API以Web Host模式部署并注册相应的路由后,这些注册的HttpRoute(HostedHttpRoute)最终会转换成asp.net全局路由表中的Route(HttpWebRoute) asp.net路由系统对请求进行拦截,如果匹配某个Route,响应的路由数据 被解析出来并保存在RequestContext中,随后asp.net路由系统的实现者 UrlRoutingModule从匹配的Route中获取RouteHandler,即HttpControllerRouteHandler对象,该对象提供HttpHandler(HttpControllerHandler)被映射到当前请求。 一旦映射成功,HttpControllerHandler将最终接管当前请求,它会构建一个 消息处理管道来处理这个请求并对请求予以响应。
GET /zoos:列出所有动物园 POST /zoos:新建一个动物园 GET /zoos/ID:获取某个指定动物园的信息 PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息) PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息) DELETE /zoos/ID:删除某个动物园 GET /zoos/ID/animals:列出某个指定动物园的所有动物 DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
API 用不到301状态码(永久重定向)和302状态码(暂时重定向,307也是这个含义),因为它们可以由应用级别返回,浏览器会直接跳转,API 级别可以不考虑这两种情况。
API 用到的3xx状态码,主要是303 See Other,表示参考另一个 URL。它与302和307的含义一样,也是”暂时重定向”,区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。收到303以后,浏览器不会自动跳转,而会让用户自己决定下一步怎么办。下面是一个例子。
1 2
HTTP/1.1 303 See Other Location: /api/orders/12345
4xx 状态码
4xx状态码表示客户端错误,主要有下面几种。
400 Bad Request:服务器不理解客户端的请求,未做任何处理。
401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。
403 Forbidden:用户通过了身份验证,但是不具有访问资源所需的权限。
404 Not Found:所请求的资源不存在,或不可用。
405 Method Not Allowed:用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。
410 Gone:所请求的资源已从这个地址转移,不再可用。
415 Unsupported Media Type:客户端要求的返回格式不支持。比如,API 只能返回 JSON 格式,但是客户端要求返回 XML 格式。
HTTP/1.1 400 Bad Request Content-Type: application/json
{ "error": "Invalid payoad.", "detail": { "surname": "This field is required." } }
返回结果
针对不同操作,服务器向用户返回的结果应该符合以下规范。
1 2 3 4 5 6
GET /collection:返回资源对象的列表(数组) GET /collection/resource:返回单个资源对象 POST /collection:返回新生成的资源对象 PUT /collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档