首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Restful网页/网站

Restful网页/网站
EN

Stack Overflow用户
提问于 2014-08-29 21:59:19
回答 3查看 1.9K关注 0票数 0

我了解restful服务的基本知识,以及它如何允许对异构应用程序的可伸缩性。

但是如何创建一个restful网页呢?例如:

https://stackoverflow.com/questionss/99999

在我看来,这个url看起来非常restful,但是用JSON或XML的传统响应如何创建一个像您现在正在查看的页面呢?

这些端点如何处理html?有人能描述一下JAX和Servlet的这个过程吗?

EN

回答 3

Stack Overflow用户

发布于 2014-08-29 22:12:42

网页不是RESTful,但是生成它的服务可能是。我并不特别了解JAX-RS,但总体思路与任何其他动态web服务并没有什么不同--服务解释请求URI并提供适当的响应。使它成为RESTful的是构建和解释URI的方法。

也许理解REST的最棘手之处在于接受基本思想是极其简单和通用的。

票数 1
EN

Stack Overflow用户

发布于 2014-08-29 22:42:00

您将RESTful与HTML混合在一起。

REST (代表性国家转移)描述了一种基于HTTP协议及其操作的体系结构样式(GET、POST、PUT、DELETE、.)以及响应状态代码,它主要集中在web资源上。

它使用URI将本地或远程资源作为目标,其中后台的服务器正在运行服务(f.e )。JAX-RS服务(JAX服务)正在监听某些路径段,并将处理超过某个基url的任何内容。一个服务可能在http://company.com上运行,并将路径/rest/products分配给它。现在,该服务将侦听http://company.com/rest/products/...的任何调用,并从URL的其余部分提取某些参数,以便根据调用服务器的HTTP处理某个请求。一个在http://company.com/rest/products/gtin/12345678上的GET请求。请求有关全球贸易项目编号12345678的产品的信息。

这取决于它将返回的内容。与JAX-RS f.e。提供上述请求的类如下所示:

代码语言:javascript
运行
复制
@Path("/rest/products")
public class ProductResource {
    @GET
    @Produces("application/json")
    @Path("/gtin/{gtin}")
    public Response getProductByGTIN(@PathParam("gtin") int gtin) {
        ...
    }

    @POST
    @Consumes("application/xml")
    @Produces("text/html")
    @Path("/")
    public Response addNewProductViaXML(ProductJAXBClass product) {
        ...
    }
}

在上面的示例中,如果JSON提供程序可用(org.json或JacksonF.E),对上述URL的调用将尝试以JSON格式返回响应。如果通过HTTP操作调用http://company.com/rest/products,并发送服务器可以理解的格式的XML,则可以在请求正文中动态地向服务添加新产品。

HTML可能只是web服务器/服务返回的许多文档格式之一。您实际从服务器收到的信息主要取决于服务器端。您可以设置某些客户端标头,告诉服务器您希望接收什么样的文档--但是服务器不会被迫接受这些头文件。

从某种意义上说,HTML可能意味着它主要针对人类,而RESTful服务没有针对任何人--但只为传入请求提供服务--如果它们是针对人类或其他计算机的,那么只要它们能够理解请求,并且有一个可以将对象转换为响应的内容处理程序,它们就不会在意。

票数 1
EN

Stack Overflow用户

发布于 2014-08-30 07:28:30

如今,REST常常被简化为通过HTTP以JSON (有时是XML)的形式传输数据的服务。这并不意味着您的网页不restful。

让我们只看一下均匀界面约束的RESTful体系结构的两点:

资源的标识:资源(通常)是由URI标识的,它们独立于它们的表示形式。因此,如果您使用JSON或/customers/4711作为表示形式,那么JSON与同一资源是独立的。客户端可以发送包含一个或多个MediaTypes的MediaTypes头,通过内容协商,服务器可以找到最适合的格式。因此,将数据也作为HTML提供是非常restful的,因为这是浏览器使用的默认MediaType。说这是不restful使用标准格式的网站是没有任何意义的。(提示:当Roy写关于REST的他的博士时,JSON还没有发明)。

超媒体作为应用程序状态的引擎:客户端只知道应用程序的入口点。响应包含客户端如何进行的所有信息。根据客户端所做的选择,服务器可以提供下一步的所有信息,等等。这是网页从一开始就做得很好的事情,只需使用超链接。如今,许多"RESTful服务“仍然缺乏这一重要功能。网页遵循这一原则的另一个例子是html表单:(摘自"休息:我觉得这不是你想的那样“- Stefan Tilkov / GOTO阿姆斯特丹,2014年):

代码语言:javascript
运行
复制
<form action='http://example.com/search' method='GET'>
    Search for: <input type='text' name='query'>
    <input type='submit'>
</form>

服务器提供了一个易于理解的菜谱,客户端可以如何构造下一个URI。

不要忽视关于JAX的问题:您的资源类可以生成text/html,但是使用您选择的模板引擎生成这个HTML是您的工作。或者你可以简单地使用JPSs。另见:JSP在HTML5中的返回?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25576815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档