c# - 如何正确地将字符串 id 传递给 Xamarin.Forms 中的 API 控制器
问题描述
我正在使用 Xamarin Forms 编写一个移动应用程序,我将在其中使用 REST API。
目前,我有一个用户模型
{
public string UserId { get; set; }
public string UserDisplayName { get; set; }
public int UserRoleId { get; set; }
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
public string UserEmail { get; set; }
public string UserPostcode { get; set; }
public DateTime UserCreatedAt { get; set; }
public DateTime UserModifiedAt { get; set; }
public bool UserDeletedAt { get; set; }
}
我在我的控制器上定义了一个 GetUser 方法
// GET: api/Users/5
[HttpGet("{id}")]
public async Task<ActionResult<User>> GetUser(string id)
{
var user = await _context.User.FindAsync(id);
if (user == null)
{
return NotFound();
}
return user;
}
如果我使用 Postman 测试 API 并在路由上解析没有引号(编辑)的字符串 id,它工作正常。例如 https://localhost:5051/api/Users/Example。但是,如果我在 qutoes(edit) 中解析 id 它不起作用: https://localhost:5051/api/Users/"Example"
我的问题是,在我的移动客户端上,当它调用调用 API 的 Web 服务时,它需要解析一个字符串,该字符串与引号(编辑)相匹配 - 匹配第二个示例。
你们中有人知道解决方案或解决方法吗?
提前致谢
编辑:
我的服务方式如下
public static async Task<IEnumerable<User>> GetUserById(string id)
{
var json = await client.GetStringAsync($"api/users/{id}");
var users = JsonConvert.DeserializeObject<IEnumerable<User>>(json);
return users;
}
我的服务电话是
var users = await UserService.GetUserById("Example");
EDIT2:固定
服务方式改为
public static async Task<User> GetUserById(string id)
{
var json = await client.GetStringAsync($"api/users/{id}");
var users = JsonConvert.DeserializeObject<User>(json);
return users;
}
解决方案
事实证明,问题是由任务定义中的 IEnumerable 类型引起的,这是有道理的,因为我试图检索单个实例。
服务方式改为
public static async Task<User> GetUserById(string id)
{
var json = await client.GetStringAsync($"api/users/{id}");
var users = JsonConvert.DeserializeObject<User>(json);
return users;
}
推荐阅读
- reactjs - 未捕获的 TypeError:使用 React 的“activedirectory”模块时的未知流类型“未定义”
- java - 如何在不使用 .equals 和错误布尔值的情况下比较数组
- db2 - dBeaver (CE):DB2 LUW 连接与 SQL 错误 42704。表架构将无法打开但能够编写 SQL 查询
- excel - 使用 VBA 根据特定值识别范围
- c - 如何通过配置文件 launch.json 在 Visual Studio 代码 (MacOS) 中调试 (.m) 文件?
- c++ - 将字符插入二维字符串时如何不显示空字符?
- sql-server - SQL Server 在一个表中打包多个位域
- angular - Angular 5 Debounce 自定义异步验证器
- git - 上传到 git 上的项目是否公开可见?
- apache-spark - 如何在 spark 中打开 TRACE 日志记录