我有一个接受加密 JSON 数据的服务,但我想使用外部服务解密该 JSON 数据,以便我可以传递未加密的数据以由适当的服务处理程序进行序列化和处理。
加密数据的 dto 如下所示:
[Route("/encrypted", "POST")]
public Encrypted
{
public string data { get; set; } // the value stored here is encrypted
}
这是解密数据的示例 dto:
[Route("/book", "POST")]
public Book
{
public string author { get; set; }
}
解密和图书服务如下所示:
public class DecryptionService : Service
{
public string Post(Encrypted request)
{
// decrypt request.data and return the decrypted json string
}
}
public class BookService : Service
{
public object Post(Book request)
{
// return a list of books based on the author
}
}
在ServiceStack AppHost 中,我从请求输入流中读取原始 JSON 数据,然后将其反序列化为 Encrypted 对象,然后调用 EncryptedService 类来解密数据并返回未加密的 JSON 字符串:
// this bit is done in a request filter method
Encrypted encDto = JsonSerializer.DeserializeFromString<Encrypted>(reqInputStreamContent);
string jsonResult = new EncryptedService().Post(encDto);
我希望请求进入他们的常规资源路线,例如。/book或/person等,JSON 请求如下所示:
{
"data":"some encrypted data"
}
然后这些数据被解密并传递给适当的动词处理程序,无论是Book.Post还是Person.Post等。棘手的部分是在解密之前我不知道普通的 json 请求是什么样的。解密后,我必须确定哪个服务处理程序应该处理请求。
如何将未加密的 json 字符串传递给适当的服务处理程序?我尝试将解密的 json 字符串反序列化为一个对象,然后发布该对象,希望正确的注册消息处理程序能够将其拾取并处理它,但这不起作用。