PUT Request for REST API 在 C# 控制台应用程序中使用 HttpClient()
PUT Request for REST API in C# console application using HttpClient()
我对在 C# 中创建和使用 REST Web 服务还很陌生。我已经对要发送到 REST 端点的数据进行了编程。我不确定我是否做对了所有事情。正如我之前提到的,这是我第一次编写 RESTful PUT 请求。
我创建了一个 class 并创建了一个 PUT 请求。我想查看我的 JSON 结果。它显示 no content
。函数正在为我返回正确的结果。
如何查看我的 JSON 结果?
sb
是 Student
类型的对象,当我向 URL 发送请求时,它 returns 处于 204
状态并且无法更新记录。我试图了解此代码中的错误之处:
class Student
{
public string Name{ get; set; }
public string Email{ get; set; }
public int Marks{ get; set; }
public List<int> Skills{ get; set; }
}
public static void SendDataSomewhere(List<Student> studentsList)
{
using (var client = new HttpClient())
{
Student sb = new Student
{
Name= "Test Name",
Email = "test@gmail.com",
Marks = HighestMarksFromList(studentsList),
Skills = InDemandSkills(studentsList),
};
client.BaseAddress = new Uri("http://testingApi.net/");
var response = client.PutAsJsonAsync("test", sb).Result;
if (response.IsSuccessStatusCode)
{
Console.Write("Success");
}
else
Console.Write("Error");
}
}
函数正在为我返回正确的结果。 var response
正在返回 204
状态代码。
如何查看我的 JSON 结果?
API 从 PUT
请求返回 204 - No Content
仅仅意味着 API 收到并处理了请求,但它没有任何意义返回成功 (2xx) 响应状态以外的状态。
在 RESTful API 中,这是完全正常的反应。
为了确定应该发生什么,您需要查阅您正在使用的 API 的文档。
您可以使用 API 测试工具,如 Postman 或其他一些在线工具,并在工具中提供适当的输入。检查 Put 查询的输出。然后你就可以知道确切的问题了。
在我看来,其他人已经通过答案和评论回答了它。但由于问题仍然悬而未决,让我尝试更详细地回答。
作为 PUT API 响应的一部分,您应该能够获得 JSON 结果的假设并不总是正确的,这取决于 API 的实施。
以下是 PUT API 的不同实现方式:
PUT API 给出对象作为响应:
[HttpPut]
public HttpResponseMessage Put(int id, Product product)
{
//save the Product object.
return Request.CreateResponse(HttpStatusCode.OK, product);
}
在此实现中,API 给出响应中的对象,这就是您所期望的。
PUT API 给出空响应:
[HttpPut]
public void Put(int id, Product product)
{
//save the Product object.
}
在此实现中,API returns 没有响应。
根据您的解释,您拨打的API属于第二种方式。如果您有权访问 API 代码,则可以验证这一点。
因此,如果您唯一的问题是知道 API 是否不起作用,请执行您的代码以执行 PUT,然后对同一对象执行 GET 以验证更新是否已完成成功。
希望对您有所帮助!
我对在 C# 中创建和使用 REST Web 服务还很陌生。我已经对要发送到 REST 端点的数据进行了编程。我不确定我是否做对了所有事情。正如我之前提到的,这是我第一次编写 RESTful PUT 请求。
我创建了一个 class 并创建了一个 PUT 请求。我想查看我的 JSON 结果。它显示 no content
。函数正在为我返回正确的结果。
如何查看我的 JSON 结果?
sb
是 Student
类型的对象,当我向 URL 发送请求时,它 returns 处于 204
状态并且无法更新记录。我试图了解此代码中的错误之处:
class Student
{
public string Name{ get; set; }
public string Email{ get; set; }
public int Marks{ get; set; }
public List<int> Skills{ get; set; }
}
public static void SendDataSomewhere(List<Student> studentsList)
{
using (var client = new HttpClient())
{
Student sb = new Student
{
Name= "Test Name",
Email = "test@gmail.com",
Marks = HighestMarksFromList(studentsList),
Skills = InDemandSkills(studentsList),
};
client.BaseAddress = new Uri("http://testingApi.net/");
var response = client.PutAsJsonAsync("test", sb).Result;
if (response.IsSuccessStatusCode)
{
Console.Write("Success");
}
else
Console.Write("Error");
}
}
函数正在为我返回正确的结果。 var response
正在返回 204
状态代码。
如何查看我的 JSON 结果?
API 从 PUT
请求返回 204 - No Content
仅仅意味着 API 收到并处理了请求,但它没有任何意义返回成功 (2xx) 响应状态以外的状态。
在 RESTful API 中,这是完全正常的反应。
为了确定应该发生什么,您需要查阅您正在使用的 API 的文档。
您可以使用 API 测试工具,如 Postman 或其他一些在线工具,并在工具中提供适当的输入。检查 Put 查询的输出。然后你就可以知道确切的问题了。
在我看来,其他人已经通过答案和评论回答了它。但由于问题仍然悬而未决,让我尝试更详细地回答。
作为 PUT API 响应的一部分,您应该能够获得 JSON 结果的假设并不总是正确的,这取决于 API 的实施。
以下是 PUT API 的不同实现方式:
PUT API 给出对象作为响应:
[HttpPut] public HttpResponseMessage Put(int id, Product product) { //save the Product object. return Request.CreateResponse(HttpStatusCode.OK, product); }
在此实现中,API 给出响应中的对象,这就是您所期望的。
PUT API 给出空响应:
[HttpPut] public void Put(int id, Product product) { //save the Product object. }
在此实现中,API returns 没有响应。
根据您的解释,您拨打的API属于第二种方式。如果您有权访问 API 代码,则可以验证这一点。
因此,如果您唯一的问题是知道 API 是否不起作用,请执行您的代码以执行 PUT,然后对同一对象执行 GET 以验证更新是否已完成成功。
希望对您有所帮助!