Saya mengubah dari WCF Web API ke ASP.NET MVC 4 Web API baru. Saya memiliki UsersController, dan saya ingin memiliki metode bernama Authenticate. Saya melihat contoh bagaimana melakukan GetAll, GetOne, Post, dan Delete, namun bagaimana jika saya ingin menambahkan metode ekstra ke dalam layanan ini? Misalnya, UsersService saya harus memiliki metode yang disebut Autentikasi di mana mereka meneruskan nama pengguna dan kata sandi, namun itu tidak berhasil.
public class UsersController : BaseApiController
{
public string GetAll()
{
return "getall!";
}
public string Get(int id)
{
return "get 1! " + id;
}
public User GetAuthenticate(string userName, string password, string applicationName)
{
LogWriter.Write(String.Format("Received authenticate request for username {0} and password {1} and application {2}",
userName, password, applicationName));
//check if valid leapfrog login.
var decodedUsername = userName.Replace("%40", "@");
var encodedPassword = password.Length > 0 ? Utility.HashString(password) : String.Empty;
var leapFrogUsers = LeapFrogUserData.FindAll(decodedUsername, encodedPassword);
if (leapFrogUsers.Count > 0)
{
return new User
{
Id = (uint)leapFrogUsers[0].Id,
Guid = leapFrogUsers[0].Guid
};
}
else
throw new HttpResponseException("Invalid login credentials");
}
}
Saya dapat mengakses myapi / api / users / dan itu akan memanggil GetAll dan saya dapat menjelajah ke myapi / api / users / 1 dan itu akan memanggil Get, namun jika saya memanggil myapi / api / users / authenticate? Username = {0} & password = {1} maka itu akan memanggil Get (NOT Authenticate) dan kesalahan:
Kamus parameter berisi entri null untuk parameter 'id' tipe non-nullable 'System.Int32' untuk metode 'System.String Get (Int32)' di 'Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController'. Parameter opsional harus berupa tipe referensi, tipe nullable, atau dideklarasikan sebagai parameter opsional.
Bagaimana cara memanggil nama metode kustom seperti Autentikasi?