我一直在努力学习api客户端。 您在www.expamle.com/api上有api,您需要能够通过www.expamle.com/api/users获取所有用户,并通过www.example.com/api/users/ {id获取它们。 id}。
在你的代码中,你需要一个单独的函数来获取所有记录而只需要一条记录吗? 我没有得到的是如何正确地序列化结果,因为当你获得多个记录时,它会返回一个数组,但它不能用于单个记录。
此外,您是否需要更多其他端点的GET函数,例如http://www.example.com/api/products/
答案 0 :(得分:1)
是的,您通常使用两个方法(C#)实现两个单独的调用:
[Route("users")]
public class UsersController : Controller
{
// users resource: /api/users/
[Route("")]
[HttpGet]
public IActionResult GetUsers() { ... }
// single user resource: /api/users/5
[Route("{id:long}")]
[HttpGet]
public IActionResult GetUser(long id) { ... }
}
这样您就可以明确定义两条不同的路线。你会发现处理不同的请求也更容易:代码更少,阅读更简单等。尽管避免代码冗余。
序列化取决于您的需求。有多种选择。这些天我个人坚持使用JSON。作为一个人,我可以轻松地读取数据,但与SOAP或任何自定义XML相比,包大小相当小。处理JSON很简单,尤其是在ASP.NET Core中。您只需返回IEnumerable<...>
,框架将处理其他所有内容:
[Route("")]
[HttpGet]
public IActionResult GetUsers()
{
return Ok(
new List<Users>
{
new User(1, ...),
new User(2, ...),
new User(3, ...)
});
}
对于其他资源,e。 G。您的产品资源,使用其他控制器。我个人遵循RESTful指南:Wikipedia和Microsoft Docs。