我很擅长在C#中创建和使用REST Web服务。我已将要发送的数据编程到REST端点。我不确定我是否正确地做了一切。就像我之前提到的,这是我第一次编写RESTful PUT请求。
我创建了一个类并创建了一个PUT请求。我想看看我的JSON结果。它显示no content
。功能正在为我返回正确的结果。
我怎样才能看到我的JSON结果?
sb
是Student
类型的对象,当我向URL发送请求时,它返回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 = "[email protected]",
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结果?
在我看来,其他人已经通过答案和评论回答了这个问题。但由于问题仍然存在,请让我尝试回答更多细节。
您假设您应该能够获得作为PUT API响应的一部分的JSON结果并不总是正确的,这取决于API的实现。
以下是可以实现PUT API的不同方法:
[HttpPut]
public HttpResponseMessage Put(int id, Product product)
{
//save the Product object.
return Request.CreateResponse(HttpStatusCode.OK, product);
}
在此实现中,API在响应中提供对象,这正是您所期望的。
[HttpPut]
public void Put(int id, Product product)
{
//save the Product object.
}
在此实现中,API不返回任何响应。
根据您的解释,您调用的API遵循第二种方式。如果您有权访问API代码,则可以验证这一点。
因此,如果您唯一的问题是要知道API是否无效,请执行代码以执行PUT,然后对同一对象执行GET以验证更新是否成功。
希望这可以帮助!
从204 - No Content
请求返回PUT
的API只是意味着API接收到请求并对其进行处理,但除了成功的(2xx)响应状态之外,它没有任何有意义的回馈。
在RESTful API中,这是一个非常正常的预期响应。
为了确定应该发生什么,您需要查阅您正在使用的API的文档。
您可以在线使用Postman等API测试工具或其他工具,并在工具中提供相应的输入。检查Put查询的输出。那么你可能会知道确切的问题。