如何编写一个在Nancy中接受JSON的post方法以及如何将其调用为C#客户端?

Tha*_*abo 4 c# rest mono nancy

我在南希写了以下模块

    public class CategoryModule : NancyModule
{
    public CategoryModule()
    {
        //At this moment just Show Hello world
        Get["/"] = _ => { return "Nancy says hello!"; };
        //Get["/"] = parameters => "Hello World!";
        GetCategories();
        SetCategory();
    }


     void GetCategories()
    {
        Get["/Catergories"] = _ =>
        {

            var catergoryRepository = new CategoryRepository();
            var categorycollection = catergoryRepository.GetCategoryInfo();
            return Negotiate.WithStatusCode(HttpStatusCode.OK).WithModel(categorycollection.ToArray());
        };
    }

     void SetCategory()
     {
         Post["/Catergories/{categryName:string}"] = _ =>
         {
             var catergoryModel = this.Bind<Category>();
             catergoryModel.PK_CategoryId = Guid.NewGuid();
             catergoryModel.CategoryName = _;
             return HttpStatusCode.OK;
         };
     }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用chrome POSTMAN来测试Module.I 如果我在POSTMAN中调用http://192.168.1.4:8888/Categories,我可以在"GetCategories()"中获得断点.但如果我打电话给http://192.168.1.4:8888/Catergories/categryName=test,我无法在SetCategory()中得到断点.我是Nancy的新手,不确定我的帖子方法是否正确.

任何人都可以提供

  1. 接受Jason作为参数的Post方法的示例
  2. 从客户端调用它的示例

我在他们的文档中找不到上面的简单示例.

注意

我正在使用自托管环境,我正在使用以下代码托管南希

var server = new Nancy.Hosting.Self.NancyHost(new Uri("http://192.168.1.4:8888"));
Run Code Online (Sandbox Code Playgroud)

以下是类别模型

    public class Category
{
    public Guid PK_CategoryId { get; set; }
    public string CategoryName { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

Rom*_*hin 5

如果你想用POSTMAN发布JSON,你应该添加带有JSON内容类型的标题,正如文档所说(第三段).设置POSTMAN:

  1. 将主机设置为http://192.168.1.4:8888/Categories并选择POST.
  2. 分别使用Content-Type和添加标题和application/json标题和值.
  3. 设置raw并设置JSON为类型.
  4. 将其{ "CategoryName": "something" }按原样放在下面的文本字段中.
  5. 点击"发送".

  • @Thabo 感谢您的反馈;) 互相帮助很酷。 (2认同)