[英]C# getting HTTP body using Nancy
快速的問題。 我正在使用Nancy將REST調用轉換為我正在處理的項目中的api調用。 我無法讓它發揮作用。
我有Nancy設置和工作,對於GET請求它沒關系。 但是,當我使用內置的RestClient發出POST請求時,如:
restClient.Post("/test", "Param");
一旦撥打電話,我無法弄清楚如何讓“Param”退出。
我有NancyModule設置如下:
public class TestNancyModule : NancyModule {
public TestNancyModule() {
Post["/test"] = p => {
for(KeyValuePair<dynamic, dynamic> kvp in (DynamicDictionary)p)
Console.WriteLine("{0}:{1}", kvp.Key, kvp.Value);
}
}
}
我在NancyModule中有一個斷點設置,當我向localhost / test發出一個post請求時會遇到這個斷點,但是我不能為我的生活弄清楚如何在Nancy里面提取“Param”模塊。 理想情況下,我可以做一些類似的事情
string POSTParameters = p["Value"]
//POSTParameters now equals "Param"
有什么建議么?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
編輯:我要離開原來的帖子了,但我會在這里澄清一下。 我的意思是詢問如何訪問傳入請求的HTTP正文。 不熟悉協議導致我使用錯誤的術語出現一些錯誤。
如果你拉入Nancy.Extensions
你可以在身體上使用.AsString()
var thing = Request.Body.AsString();
這是南希的方式。
在新版本的NancyFx(1.4+)中,您可以使用此解決方案:
using Nancy.IO;
...
var yourString = RequestStream.FromStream(Request.Body).AsString();
而
var yourString = Request.Body.AsString();
不再支持。
想出來,它可以在“請求”字段下訪問。
對於代碼,我可以通過做類似的事情來獲取Body
byte[] response = new byte[Request.Body.Length];
Request.Body.Read(response, 0, (int)Request.Body.Length);
和
string POSTParameters = System.Text.Encoding.Default.GetString(response);
這正是我想要的。 如果身體會變得更復雜,我不建議這樣做,但我只會用一個單詞來傳遞這篇文章。
對於查詢參數,您可以在模塊上使用Nancy的Request對象。
var queryParam = this.Request.Query.ParamName;
對於您可以使用的實際帖子
this.Bind();
這將使用正文中指定的屬性創建動態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.