api-platform / api-platform/api-doc-parser

fetchResource loads actual items from the API due to wrong queryParameter

オープン
#115 コメント 4 件 リアクション 0 件 担当者 1 名 @soyuka が担当を希望しています GitHub で見る
主要言語
TypeScript
スター
113
フォーク
80
PR マージ指標
30日以内にマージされた PR はありません

説明

**API Platform version(s) affected**: 2.6.8

**Description**

The API doc parser uses `fetch()` via the `fetchResource()` method to load API metadata, and fails to apply the query parameter `{ itemsperpage: 0 }` correctly to limit the request to only metadata and no API items.

`fetchResource()` tries to set the query parameter via a secondary `options` parameter, however `fetch()` doesn't support that - params have to be part of the url instead.

```js
// Current code:
fetchJsonLd(
resourceUrl,
Object.assign({ itemsPerPage: 0 }, options)
)

// Fixed code:
fetchJsonLd(
resourceUrl + "?itemsPerPage=0",
options
)
```

* [Link to fetchJsonLd](https://github.com/api-platform/api-doc-parser/blob/f8610390c8bd5f8f5e641e3fd240c79af1f958f9/src/hydra/fetchJsonLd.ts#L22)
* [Link to fetchResource calling fetch()](https://github.com/api-platform/api-doc-parser/blob/f8610390c8bd5f8f5e641e3fd240c79af1f958f9/src/hydra/fetchResource.ts#L11)
* [fetch() docs on mdn](https://developer.mozilla.org/en-US/docs/Web/API/fetch#init)

**How to reproduce**

**Possible Solution**

Replace the Object.assign() call with an URL including the query parameter, possibly by building an URL:

```js
const url = new URL(resource.url);
const params = new URLSearchParams(["itemsPerPage", 0]);
url.search = params.toString();

fetchJsonLd(url, options)
```

**Additional Context**

Please excuse that my code examples are in plain JS, not TS, since I'm not familiar enough with typescript.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。