簡體   English   中英

route / json / syncreply在ServiceStack中來自哪里?

[英]Where does the route /json/syncreply come from in ServiceStack?

我正在嘗試使用此DTO向第三方api發送請求:

[Route("log_entries", "GET")]
public class MyRequest: IReturn<MyResponse>
{
}

客戶要求:

string uri = "https://..../api/v1"
var jsonClient = new JsonServiceClient(uri);

// This works
var response = client.Get<MyResponse>("/log_entries");

// Does not work
var response = client.Send(new MyRequest());

我目前正在收到Not Found回復。 當我使用Fiddler發送到http:// ,我可以看到添加了路徑/json/syncreply ,即../api/v1/json/syncreply /json/syncreply ../api/v1/json/syncreply /json/syncreply >我希望了解它的來源以及如何確保我的請求是發送在正確的道路上。

干杯

/json/syncreply是在ServiceStack API中定義的路由,作為發送DTO而不必為給定DTO提供特定路由的方法,換句話說,ServiceStack主機將根據MyRequest的類型名稱創建路由。 ,可以使用Send方法由ServiceStack客戶端解析。

第三方API不使用Send

當您使用ServiceStack.JsonServiceClient消耗第三方API並且它們的API不是基於ServiceStack時, Send方法將無法工作,因為它們的服務器API沒有適當的路由。

Send方法僅適用於使用ServiceStack API,因為這是ServiceStack特有的功能。

使用請求DTO

你應該讓你的要求就是這樣,注意Get<T>其中T是請求對象, MyRequestMyResponse

MyResponse response = client.Get<MyRequest>();

並在DTO的路線聲明前面添加斜杠:

[Route("/log_entries", "GET")]
public class MyRequest: IReturn<MyResponse>
{
}

tldr;

對於不是ServiceStack服務的第三方API,您需要使用相應的VERB方法,如GetPostPut等,因此使用DTO上定義的路由,而不是json/syncreply路由,因此只需避免Send方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM