- From: Mislav Marohnić <notifications@github.com>
- Date: Fri, 13 Jan 2017 04:44:27 -0800
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/issues/452@github.com>
In `fetch(url)` and `new Request(url)` invocations, can `url` be an instance of `URL`? The spec is not clear. [This example shows](https://fetch.spec.whatwg.org/#fetch-api) that `fetch()` should likely accept URL: ```js var url = new URL("https://geo.example.org/api"), params = {lat:35.696233, long:139.570431} Object.keys(params).forEach(key => url.searchParams.append(key, params[key])) fetch(url).then(/* … */) ``` However, when I look at the spec itself, the first argument for Request constructor is [defined as "RequestInfo"](https://fetch.spec.whatwg.org/#requestinfo), and [later on it states](https://fetch.spec.whatwg.org/#dom-request): > 5\. **If input is a string**, then run these substeps: … > 6\. **Otherwise (input is a `Request` object**), run these substeps: … This suggests that the argument may only be "USVString" or Request, and that behavior concerning other types is undefined, or—as I interpret it—that any non-string type will be treated as Request and that an exception will be thrown if the type doesn't look like a Request. The spec also suggests that the behavior of the `fetch()` method is identical to `new Request()` because the arguments to `fetch()` are [forwarded to Request constructor](https://fetch.spec.whatwg.org/#dom-global-fetch). It follows that `fetch()` too only accepts string or Request as argument. Google Chrome's implementation, however, seems to treat any non-Request argument as a url by converting it to a string. Example: ```js new Request({ toString: () => "foo" }).url // => "https://github.com/whatwg/fetch/issues/foo" ``` -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/fetch/issues/452
Received on Friday, 13 January 2017 12:45:03 UTC