Wofür ist der Teil "akzeptieren"? - Ruby, URI, Net-http

Beim Verbinden mit einer Website mit Net::HTTP Sie können die URL analysieren und jeden der URL-Header mithilfe von ausgeben #.each_header. Ich verstehe was die Verschlüsselung und der User Agent und so bedeutet, aber nicht was die "accept"=>["*/*"] Teil ist. Ist das die akzeptierte Nutzlast? Oder ist es etwas anderes?

require "net/http"

uri = URI("http://www.bible-history.com/subcat.php?id=2")
http://www.bible-history.com/subcat.php?id=2>
http_request = Net::HTTP::Get.new(uri)
http_request.each_header { |header| puts header }

# => {"accept-encoding"=>["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], "accept"=>["*/*"], "user-agent"=>["Ruby"], "host"=>["www.bible-history.com"]}

Antworten:

1 für die Antwort № 1

Von https://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z3

Dieses Feld enthält eine durch Semikolons getrennte Liste von Repräsentationsschemata (Inhaltstyp-Metainformationswerte), die in der Antwort auf diese Anforderung akzeptiert werden.

Grundsätzlich gibt es an, welche Arten von Inhalten Sie zurücklesen können. Wenn Sie einen API-Client schreiben, interessiert Sie möglicherweise nur application/jsonZum Beispiel (und Sie könnten sich nicht kümmern text/html).

In diesem Fall würde Ihre Kopfzeile wie folgt aussehen:

Accept: application/json

Und die App wird wissen, dass Sie keinen HTML-Code auf Ihre Art senden können.


1 für die Antwort № 2

Verwendung der Accept Header kann der Client MIME-Typen sie angebensind bereit, für die angeforderte URL zu akzeptieren. Wenn die angeforderte Ressource z.B. Verfügbar in mehreren Darstellungen (z. B. ein Bild als PNG, JPG oder SVG), kann der Benutzeragent spezifizieren, dass sie nur die PNG-Version haben wollen. Es ist Aufgabe des Servers, diese Anforderung zu erfüllen.

In Ihrem Beispiel gibt der Anforderungsheader an, dass Sie bereit sind, einen beliebigen Inhaltstyp zu akzeptieren.

Der Header ist definiert in RFC 2616.


Am beliebtesten