The HttpResponse class holds all the responses elements for an HTTP request. This document details how to work specifically with the content-type of the response headers
Content types
The "Content-Type" header in HTTP responses gives the media type of the response. The media type is both the data format and how the data is intended to be processed by a recipient. (modified from rfc7231)
Behavior of the parameters HttpResponse raise_for_ct* methods
type: (only applicable for the
raise_for_ct()
method): instead of using one of the three other content type methods for html, json, or xml, you can specify a mime type to check, any of those in mime::mimemapcharset: if you don't give a value to this parameter, we only check that the content type is what you expect; that is, the charset, if given, is ignored.
behavior: by default when you call this method, and the content type does not match what the method expects, then we run
stop()
with a message. Instead of stopping, you can choosebehavior="warning"
and we'll throw a warning instead, allowing any downstream processing to proceed.
References
spec for content types: https://datatracker.ietf.org/doc/html/rfc7231#section-3.1.1.5
spec for media types: https://datatracker.ietf.org/doc/html/rfc7231#section-3.1.1.1
Examples
if (FALSE) { # \dontrun{
(x <- HttpClient$new(url = "https://hb.opencpu.org"))
(res <- x$get())
## see the content type
res$response_headers
## check that the content type is text/html
res$raise_for_ct_html()
## it's def. not json
# res$raise_for_ct_json()
## give custom content type
res$raise_for_ct("text/html")
# res$raise_for_ct("application/json")
# res$raise_for_ct("foo/bar")
## check charset in addition to the media type
res$raise_for_ct_html(charset = "utf-8")
# res$raise_for_ct_html(charset = "utf-16")
# warn instead of stop
res$raise_for_ct_json(behavior = "warning")
} # }