2016-10-17 3 views
0

У меня есть следующая простая конечная точка HTTPPOST;WebApi HTTPPOST Конечная точка не была удалена

[AllowAnonymous] 
[HttpPost] 
[Route("forgotPassword")] 
public IHttpActionResult ForgotPassword(string userName, string callbackUrl) 

Если контроллер оформлен следующим образом;

[Authorize] 
[RoutePrefix("api/accounts")] 
public class AccountsController : ApiController 

Теперь, когда я пытаюсь проверить эту конечную точку в почтальоне, используя следующий URL;

http://localhost:11217/api/accounts/forgotPassword

со строками в теле сообщения

я получаю следующее возвращение.

{ "Сообщение": "Ни один HTTP ресурс не найден, что соответствует запросу URI 'http://localhost:11217/api/accounts/forgotPassword'.",
"MessageDetail": «Никаких действий не было найдено на контроллере 'Accounts' , что совпадает с запрос." }

Теперь мне не нужно создавать модель для двух строк (если возможно). Кроме того, если я пытаюсь поставить Params в строке запроса я получаю potantially Dangerous ответ на запрос

http://localhost:11217/api/accounts/forgotPassword/test&callbackUrl=local

Может кто-нибудь помочь, пожалуйста?

ответ

2

Если вы хотите отправить Mulitple параметры при выполнении запроса на запись, вы должны создать DTO, который содержит параметры, как

public class forgetPasswordDTO 
{ 
    public string userName { get; set; } 
    public string callbackUrl { get; set; } 
} 

Затем добавьте DTO в качестве параметра метода с [FromBody]

[AllowAnonymous] 
[HttpPost] 
[Route("forgotPassword")] 
public IHttpActionResult ForgotPassword([FromBody] forgetPasswordDTO data) 

И в вас клиента, создать объект как

var data = { 
    'userName': user, 
    'callbackUrl': url 
}; 

И добавить к й тело запроса.

Here's хорошая статья на эту тему

+0

Я думал так, я просто надеялся, что связующее вещество будет иметь возможность обойти это. –

+0

'[FromBody]' должно быть необходимо только для простых типов (например, строки). Для объекта DTO в запросе POST связующее должно пытаться автоматически считывать его из тела запроса. См. Https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api – ADyson

+0

@ADyson Спасибо, не знал этого. –

Смежные вопросы