3

admin-on-rest を使用すると、カスタム REST クライアントを作成することで、任意の JSON 応答を使用できます。 ドキュメントの例は、単純な json-serverプロジェクトから JSON を使用するためのものです。

この APIを admin-on-rest でわずかに変更してrestClientで使用するのはどれほど簡単なのだろうかと思っていました。

4

2 に答える 2

0

わかりました - 残りの管理者のソース (ファイル 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 をチェックインしてください。

于 2017-11-23T12:35:06.163 に答える
-1

私が間違っていなければ、(例として) 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 部分の代わりにパラメーターを介してレコードを取得します。

于 2017-07-29T21:31:55.970 に答える