Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RESTAPI,为什么没有HTML而没有JSON?_Html_Json_Api_Rest_Representation - Fatal编程技术网

RESTAPI,为什么没有HTML而没有JSON?

RESTAPI,为什么没有HTML而没有JSON?,html,json,api,rest,representation,Html,Json,Api,Rest,Representation,这可能是个愚蠢的想法,但我想知道为什么 我正在阅读RESTAPI和HATEOAS等原则。一直以来,我都在想为什么人们不只是使用HTML来表示他们的资源 当然,我可以想到一些缺点,比如解析困难和数据增加,但另一方面,它是一种语义超媒体语言,可以将数据与表示分离。此外,它是人类可读的,人们可以在浏览器中与之交互、跟踪链接、提交表单等。它可以用作API和UI 有人能解释为什么将HTML用于RESTAPI表示是一个糟糕的想法吗 有人能解释为什么在RESTAPI中使用HTML是个糟糕的主意吗 陈述 对

这可能是个愚蠢的想法,但我想知道为什么

我正在阅读RESTAPI和HATEOAS等原则。一直以来,我都在想为什么人们不只是使用HTML来表示他们的资源

当然,我可以想到一些缺点,比如解析困难和数据增加,但另一方面,它是一种语义超媒体语言,可以将数据与表示分离。此外,它是人类可读的,人们可以在浏览器中与之交互、跟踪链接、提交表单等。它可以用作API和UI

有人能解释为什么将HTML用于RESTAPI表示是一个糟糕的想法吗

有人能解释为什么在RESTAPI中使用HTML是个糟糕的主意吗 陈述

  • 它的格式不好
  • 客户端如何一致地解析结果
  • 标记是冗长的
  • 它不是一种供机器使用的格式。这是人类的观点。RESTAPI用于机器消费
  • 大型响应过于庞大,会导致更多的网络延迟
  • 至于表示,您不能假设API将由浏览器使用。本地Android/iOS应用程序呢
      www使用html作为REST! 这个主意一点问题也没有。就我个人而言,我首先要祝贺你质疑这一点,很多人都不这么认为

      Rest并不强制要求应用程序协议,只是JSON/XML已经成为标准选择(因为HTML通常很难解析)。如果您使用简化版的HTML,您可能会发现它比JSON更有用

      我已经编写了几个rest应用程序,它们接受application/json和text/html进行内容协商。它允许在浏览器上轻松测试

      正如你所提到的,这无疑让仇恨变得更容易! JSON(目前)没有处理HATEOAS或强类型的标准机制(大多数人使用@class方式指定JSON代表的对象)。在我看来,JSON还没有完成

      另一方面,XML是。。但是,如果HTML不是一种XML,它又是什么呢

      使用html:

      <div name="Elvis Presley" id="1" class="com.graceland.elvis.Person">
          <a href="/people/12" id="12" class="com.graceland.elvis.Person">wife</a>
          <span name="country" class="java.lang.String">USA</span>
      </div>
      
      
      美国
      

      希望你能用Json复制它。Json不能有效地为初学者处理“属性”

      REST是关于机器之间的通信。HTML包含很多GUI元素,它包含CSS、JS等。。。也所有这些都是供人类显示视图的。机器只对数据及其注释感兴趣

      顺便说一句,REST可以使用HTML作为数据传输格式。例如,有(或刚刚有?)HTML序列化格式,并且可以使用HTML,例如


      如果你说的是浏览器和REST客户端(只提取数据)都可以使用的HTML,那么我认为通常很难编写这样的HTML文档。

      REST支持包括HTML在内的各种内容。很明显,大多数RESTful应用程序和Web API都专注于数据。因此,JSON、XML和YAML等格式更便于构建和解析

      但是,如果您想利用REST的Conneg功能(内容协商-基于页眉
      Accept
      ),您可以根据调用者处理几种类型的内容:

      • 浏览器。也许我们更愿意显示HTML内容来显示请求的UI。您将有:
        接受:text/html
      • 申请书。在这种情况下,您更希望看到一些结构化数据。您可能会遇到这样的情况:
        Accept:application/json
        Accept:application/xml
        ,等等
      事实上,这取决于RESTful应用程序。我构建了RESTful应用程序,实现conneg并根据指定的头
      Accept
      发回几种内容

      希望有帮助,
      蒂埃里;dr:如果我们假设XML对于REST API来说不是一个糟糕的想法,那么我认为使用XHTML的严格子集(JSON是JavaScript的严格子集)是合理的,尤其是如果HATEOAS对您的API很重要的话。

      HTML对于REST API的基本好处是
      与您想要的非常接近,但是它只处理
      GET
      对于HTTP,您需要处理所有其他HTTP方法的方法(因此需要
      标记)。如果您只关心
      GET
      请求,我认为这可能适合您。您在一条评论中询问了JSON-LD,在中可以看到micro data和JSON-LD之间的相似性

      微观数据
      
      阿凡达
      导演:詹姆斯·卡梅隆
      (1954年8月16日出生)
      科幻小说
      
      JSON-LD
      +schema应用程序
      { 
      “@context”:”http://schema.org/",
      “@type”:“网站管理员”,
      “名称”:“schema.org/person”,
      “结构数据”:
      { 
      “@type”:“Person”,
      “名称”:“chema mpnrroy josepinedamonroy”,
      “出生日期”:“1982年10月19日”
      },
      "耿":"男",,
      “Mecanismo”:微数据。“.Esstructuredate./”validador
      }
      
      我认为主要的问题是HATEOAS并没有为开发者提供足够的实际好处,他们只是想传输数据,而不是有一个自我发现的API。自我发现并不是那么重要,因为与你的API交互的人只需要发现一次相关的URL,然后只要你的API没有改变,他们就不必再关心了。此外,即使您编写了一个完全支持HATEOAS的RESTAPI,其主要好处应该是客户端不需要硬编码URL,因此更改URL也无所谓。但是,您无法阻止API客户机不硬编码URL,因此如果您确实更改了结构,那么您将有不愉快的客户机。以web为例,它是一个(大部分)正确实现的RESTAPI,但链接腐烂仍然是一个主要问题,因为每个人
      <div itemscope itemtype="http://schema.org/Movie">
        <h1 itemprop="name">Avatar</h1>
        <div itemprop="director" itemscope itemtype="http://schema.org/Person">
        Director: <span itemprop="name">James Cameron</span> 
      (born <time itemprop="birthDate" datetime="1954-08-16">August 16, 1954</time>)
        </div>
        <span itemprop="genre">Science fiction</span>
        <a href="../movies/avatar-theatrical-trailer.html" itemprop="trailer">Trailer</a>
      </div>
      
      <script type="application/ld+json">+schema app
      { 
        "@context": "http://schema.org/",
        "@type": "web master",
        "name": "schema.org/person",
        "Struturedata": 
          { 
             "@type": "Person",
             "name": "chema mpnrroy josepinedamonroy",
             "birthDate": "10/19/1982"
          },
        "geng": "male",
        "Mecanismo":microdata. ".estructuredate./" validador
      }
      </script>