我正在为内部公司应用程序设计 Restful Web 服务,并且很好奇如何合并 JSON 和“Web 内容”请求。
Web 应用程序与所有优秀的企业应用程序一样,具有反射(reflect)在 URL 中的三个字母的缩写。假设该应用程序的“呼号”是 abc,用户通过以下 URL 访问它
当用户访问应用程序的根目录时,我们希望为他们提供主 html 页面、.js 文件(包括 jquery)、css 和图像。然后,jquery 将开始向服务器发出 AJAX 调用。
处理这些多种内容类型的最佳方法是什么?
http://servername/abc (返回index.html的内容)
http://servername/abc/javascript/jquery.js (返回js文件)
http://servername/abc/countries/de (返回 JSON)
我应该将其分成两个网络上下文吗?我应该在 ajax 调用中使用 jquery contentType 参数来显式指定 JSON、HTML 或其他内容吗?
最佳答案
jQuery contentType
实际上只是一个参数,用于在向服务器发出的 HTTP 请求上设置内容类型 header 。为 AJAX 调用设置这些始终是最佳实践。
添加:
另一个好的做法是指定 dataType
参数,因为它将在 HTTP 请求上设置接受 header 。这对于 GET 和 POST AJAX 请求都很有用。
大多数(如果不是全部)Web 服务框架(Rails、ASP.NET MVC、.NET WCF 等)都能够检查 HTTP 请求的 header 并确定要返回的内容类型
例如:
HTTP header 中的 application/json
会让您的 Web 服务知道返回 JSON 响应而不是 HTML 或 XML 响应。
我见过的一些为 HTML/JSON 服务组织的 Web 应用程序的更好方法是让您的标准路由始终为您的 HTML 页面和资源提供服务,即:
http://servername/abc/javascript/jquery.js
完全按照你说的做。对于 JSON(甚至 XML)响应,我看到人们创建了一个明确理解的路由来返回这些类型的响应,即:
http://servername/api/abc/countries/de
url 路由以 /api/
开头,它始终被理解为返回非 html JSON/XML 响应
这使您的公司可以轻松地在内部和外部了解 /api/
路由是您的 JSON/XML 响应。如果您想这样做,它还可以更轻松地向外部客户公开这些方法,因为基础设施就在那里,您只需要对请求进行身份验证等。
关于ajax - 控制 Restful Web 服务中的内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418998/