admin-on-rest を使用すると、カスタム REST クライアントを作成することで、任意の JSON 応答を使用できます。 ドキュメントの例は、単純な json-serverプロジェクトから JSON を使用するためのものです。
この APIを admin-on-rest でわずかに変更してrestClientで使用するのはどれほど簡単なのだろうかと思っていました。
admin-on-rest を使用すると、カスタム REST クライアントを作成することで、任意の JSON 応答を使用できます。 ドキュメントの例は、単純な json-serverプロジェクトから JSON を使用するためのものです。
この APIを admin-on-rest でわずかに変更してrestClientで使用するのはどれほど簡単なのだろうかと思っていました。
わかりました - 残りの管理者のソース (ファイル admin-on-rest/src/util/fetch.js) を見てみましょう。私たちは fetchJson メソッドに興味があります。
そのメソッドは fetch promise を返し、そのコードで json を解析しようとします。
try {
json = JSON.parse(body);
} catch (e) {
// not json, no big deal
}
そしてそれはそれを返します:return { status, headers, body, json };
しかし、結果にはボディがあり、それを再利用するか、jsonで解析されたオブジェクトを使用する場合があります
あなたの例では、そうするかもしれません(一部のコードが欠落しています):
const httpClient = (url, options = {}) => {
if (!options.headers) {
options.headers = new Headers({ Accept: 'application/json' });
}
options.withCredentials = true;
return fetchUtils.fetchJson(url, options).then(({status, headers, body, json}) => {
json = json['results'] ? json['results'] : json;
return {status, headers, body, json};
});
}
そのため、その行のスキーマの「結果」からのコレクションによってjsonオブジェクトを上書きしました。
json = json['results'] ? json['results'] : json;
これで、管理者でそのクライアントを使用できます
<Admin restClient={restClient}>
...
</Admin>
警告!!!これは、管理者のすべてのリクエストに影響します。ただし、追加のパラメーターを追加することはできます。使用したくない場合はjson = json['results'] ? json['results'] : json;
、パラメータを追加するか、メソッド fetch をチェックインしてください。
私が間違っていなければ、(例として) https://marmelab.com/admin-on-rest-demo/#/customers/684 TO: https://marmelab. com/admin-on-rest-demo/?customers=684
restClient.js で GET_ONE を書き換えることができます: case GET_ONE: url = ${apiUrl}/${resource}/${params.id}
; TO: ケース GET_ONE: URL = ${apiUrl}/?${resource}=${params.id}
;
これは、url 部分の代わりにパラメーターを介してレコードを取得します。