ajax - 控制 Restful Web 服务中的内容类型

标签 ajax json rest jquery

我正在为内部公司应用程序设计 Restful Web 服务,并且很好奇如何合并 JSON 和“Web 内容”请求。

Web 应用程序与所有优秀的企业应用程序一样,具有反射(reflect)在 URL 中的三个字母的缩写。假设该应用程序的“呼号”是 abc,用户通过以下 URL 访问它

http://servername/abc

当用户访问应用程序的根目录时,我们希望为他们提供主 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

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/

相关文章:

jquery - spring MVC 3 get请求从ie错误地返回代码304

php - CKEditor 4 内联编辑保存按钮插件

java - TJWS for CouchBase Lite Listener 的多用户身份验证

java - 为什么我用 spring-boot 得到 404 for rest

java - 使用 php CURL 请求将 CSV 文件发送到 java 中的 Jersey 休息 API?

java - 无法向 Servlet 发送 ajax post 请求

java - 使用 JSR 303 验证和 AJAX 动态生成的网页

json - Cloudformation 中的 Cloudwatch 仪表板错误

php - JSON 解码 (PHP)

javascript - C3js时间序列无法显示连续线