2010-01-13 6 views
2

J'ai créé un nouveau codec JSON personnalisé pour OpenRasta qui fonctionne correctement.OpenRasta - Passer les paramètres au codec personnalisé

Je dois passer des arguments à la méthode d'écriture du codec lorsque le gestionnaire est exécuté mais ne trouve aucune documentation sur la façon de le faire.

Je remarque dans la méthode WriteTo mis en œuvre, il y a un paramètre string[] codecParameters, cependant aucune idée comment les passer dans.

Si quelqu'un vient accross ce problème avant? Merci

Répondre

3

les paramètres de codec sont par demande. Ils sont destinés à être utilisés avec (par exemple) le PathSegmentAsParameterUriDecorator. Par exemple, si vous activez ce décorateur, le segment path/resource sera traité comme/resource par openrasta et un paramètre sera créé avec la valeur "segment" et transmis au codec.

Si vous souhaitez transmettre des informations au codec à partir du gestionnaire, il n'y a rien, car cela va à l'encontre de la conception d'OpenRasta, qui empêche spécifiquement les gestionnaires et les codecs de se parler.

Si vous souhaitez transmettre des données de configuration à votre codec, vous utilisez la propriété Configuration de l'interface ICodec, qui sera remplie avec l'objet que vous avez fourni au moment de la configuration.

Vous fournissez l'objet de configuration via le paramètre dans la méthode .TranscodedBy (configuration d'objet) ou si vous effectuez un enregistrement personnalisé à l'aide du métamodèle de configuration, ajoutez la configuration à votre propriété Configuration sur CodecModel (qui est utilisée l'objet ResourceModel créé par l'API fluide).

Avez-vous un scénario spécifique que je peux aider?

+0

Salut serialseb. Merci pour la réponse, très utile. Malheureusement, il ne résout pas mon problème, mais peut-être que vous connaissez une solution de contournement. Mon scénario est: Je souhaite renvoyer certaines informations dans les en-têtes de réponse HTTP. Je n'ai pas accès au flux de réponse dans le gestionnaire, seulement dans le codec. Pour le moment, je dois renvoyer un DTO (contenant les données des champs d'en-tête) du gestionnaire, puis l'extraire dans le codec et le placer dans les en-têtes de réponse. Cela fonctionne, mais je serais intéressé s'il y a un moyen de modifier le paquet de réponse HTTP dans le gestionnaire. Merci! – joeweoj

+2

cela dépend de l'en-tête. S'il s'agit d'un en-tête d'entité, il est bon de le déduire du DTO retourné par le gestionnaire, car le DTO * est * l'entité. Cela dit, cela dépend si l'en-tête de l'entité en question peut être déduit ou si c'est une valeur opaque (dans ce cas, vous pouvez rendre la réponse moins transparente). Cela dit, vous avez accès aux en-têtes dans votre gestionnaire. Non que vous devriez le faire, mais prenez juste une dépendance sur IResponse dans le gestionnaire et utilisez la propriété Entity.Headers. – SerialSeb

Questions connexes