diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2faf4516..97a92d03 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,8 +8,13 @@ This project adheres to `Semantic Versioning `_. `2.1.0-dev`_ (unreleased) ------------------------- -* Add ``--path-as-is`` to bypass dot segment (``/../`` or ``/./``) URL squashing. -* Fixed ``--form`` file upload mixed with redirected ``stdin`` error handling. +* Added ``--path-as-is`` to bypass dot segment (``/../`` or ``/./``) + URL squashing (#895). +* Changed the default value ``Accept`` header value for JSON requests from + ``application/json, */*`` to ``application/json, */*;q=0.5`` + to clearly indicate preference (#488). +* Fixed ``--form`` file upload mixed with redirected ``stdin`` error handling + (#840). `2.0.0`_ (2020-01-12) diff --git a/README.rst b/README.rst index 66cfb812..b4864799 100644 --- a/README.rst +++ b/README.rst @@ -469,7 +469,7 @@ Simple example: .. code-block:: http PUT / HTTP/1.1 - Accept: application/json, */* + Accept: application/json, */*;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/json Host: httpbin.org @@ -490,7 +490,7 @@ both of which can be overwritten: ================ ======================================= ``Content-Type`` ``application/json`` -``Accept`` ``application/json, */*`` +``Accept`` ``application/json, */*;q=0.5`` ================ ======================================= @@ -500,7 +500,7 @@ Explicit JSON You can use ``--json, -j`` to explicitly set ``Accept`` to ``application/json`` regardless of whether you are sending data (it's a shortcut for setting the header via the usual header notation: -``http url Accept:'application/json, */*'``). Additionally, +``http url Accept:'application/json, */*;q=0.5'``). Additionally, HTTPie will try to detect JSON responses even when the ``Content-Type`` is incorrectly ``text/plain`` or unknown. @@ -525,7 +525,7 @@ fields using ``=@`` and ``:=@``: .. code-block:: http PUT /person/1 HTTP/1.1 - Accept: application/json, */* + Accept: application/json, */*;q=0.5 Content-Type: application/json Host: httpbin.org @@ -1009,7 +1009,7 @@ documentation examples: $ http --verbose PUT httpbin.org/put hello=world PUT /put HTTP/1.1 - Accept: application/json, */* + Accept: application/json, */*;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/json Host: httpbin.org diff --git a/httpie/client.py b/httpie/client.py index 6c412e73..e3c6fa39 100644 --- a/httpie/client.py +++ b/httpie/client.py @@ -30,7 +30,7 @@ except (ImportError, AttributeError): FORM_CONTENT_TYPE = 'application/x-www-form-urlencoded; charset=utf-8' JSON_CONTENT_TYPE = 'application/json' -JSON_ACCEPT = f'{JSON_CONTENT_TYPE}, */*' +JSON_ACCEPT = f'{JSON_CONTENT_TYPE}, */*;q=0.5' DEFAULT_UA = f'HTTPie/{__version__}' diff --git a/tests/test_defaults.py b/tests/test_defaults.py index 10221fe4..5489c193 100644 --- a/tests/test_defaults.py +++ b/tests/test_defaults.py @@ -22,6 +22,7 @@ def test_default_headers_case_insensitive(httpbin): assert 'Content-Type' not in r +# noinspection PyPep8Naming class TestImplicitHTTPMethod: def test_implicit_GET(self, httpbin): r = http(httpbin.url + '/get') @@ -51,9 +52,9 @@ class TestImplicitHTTPMethod: class TestAutoContentTypeAndAcceptHeaders: """ - Test that Accept and Content-Type correctly defaults to JSON, - but can still be overridden. The same with Content-Type when --form - -f is used. + Test that `Accept` and `Content-Type` correctly default to JSON, + but can still be overridden. The same with Content-Type when `--form` + `-f` is used. """ @@ -84,7 +85,7 @@ class TestAutoContentTypeAndAcceptHeaders: assert r.json['headers']['Accept'] == JSON_ACCEPT assert r.json['headers']['Content-Type'] == 'application/json' - def test_POST_explicit_JSON_auto_JSON_accept(self, httpbin): + def test_POST_explicit_JSON_JSON_ACCEPT(self, httpbin): r = http('--json', 'POST', httpbin.url + '/post') assert HTTP_OK in r assert r.json['headers']['Accept'] == JSON_ACCEPT