如何解决通过http获取请求ASP.core API传递多个参数
亲爱的我有以下控制器,
[Route("[action]/{phone}/{password}",Name="PhoneLogin")]
[HttpGet]
public async Task<ActionResult<User>> PhoneLogin(string phone,string password)
{
var response = await _repository.PhoneLogin(phone,password);
if (response == null) { return NotFound(); }
return Ok(_mapper.Map<UserReadDto>(response));
}
public async Task<User> PhoneLogin(string phone,string pass)
{
StringCipher s = new StringCipher();
using (SqlConnection sql = new SqlConnection(_connectionString))
{
using (SqlCommand cmd = new SqlCommand("spPhoneLogin",sql))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@phone",phone));
cmd.Parameters.Add(new SqlParameter("@password",s.EncryptString(pass)));
User response = null;
await sql.OpenAsync();
using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
response = MapToValue(reader);
}
}
return response;
}
}
}
我是API的新手。我试图与请求发送两个参数。 以及在这种情况下如何构造URI。
解决方法
根据您的路由属性[Route("[action]/{phone}/{password}",Name="PhoneLogin")]
,可以在 / PhoneLogin / anyString / anyOtherString 下访问该方法,其中 anyString 将绑定到电话和 anyOtherString 到密码。
如果控制器类上具有其他路由属性,例如[Route("[controller]")]
,则还需要添加控制器的名称,这将导致 / MyControllerName / PhoneLogin / anyString / anyOtherString 。
请仔细阅读model binding和routing fundamentals上的文档。默认的模型绑定遵循预定义的顺序,(根据文档)为
- 表单字段
- 请求正文(对于具有[ApiController]属性的控制器。)
- 路线数据
- 查询字符串参数
- 上传的文件
因此,由于未提供任何表单字段或请求正文(这是get-request的最常见情况),因此路由数据用于绑定这两个参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。