JSONAPI仕様でexpress.js
のAPIをビルドしており、sequelize.js
モデルを持っています。たとえば、User
名前、メール、残高、last_login_timeなどの属性を持つモデルJSONAPIで指定されたゲストユーザーとauthrizedユーザーの `User`モデルをシリアル化するベストプラクティスは何ですか?
クライアントアプリケーションのユーザーがサードパーティのユーザーAPIに関するデータを要求する場合、名前やlast_login_timeなどのパブリック属性のみで応答する必要があります。
クライアントアプリケーションのユーザーが自分自身についてのデータを要求する場合、APIは公開属性と非公開属性で応答する必要があります。
シリアライザとしては、jsonapi-serializer
libを使用します。私は2つの異なるシリアライザを作成
var JSONAPISerializer = require('jsonapi-serializer').Serializer;
module.exports = new JSONAPISerializer('users', {
attributes: ['name']
});
Sould:私はそのようなシリアライザを持っていますか?ほとんどすべてのモデルに2つのシリアライザがあり、それが参照の混乱につながる可能性があるので、問題につながることはありませんか?
var User = sequelize.define('User', {
...
instanceMethods: {
serializeApi: function() {
return User.apiSerializer().serialize(this);
}
}
};
User.apiSerializer = function() {
return new JSONAPISerializer('users', {
attributes: ['name']
});
}
:
あなたのアプローチは良いです。しかし、私の問題は、彼が彼のプロフィールデータを取り出すときなど、許可されたユーザーのためのいくつかの追加の属性をシリアル化する方法ですか? – Dmitro
別の新しいモデルである 'user.profile'のように? – user3254198
'email'フィールドを' user'から 'user.profile'に移動するのがいいですか? – Dmitro