Конечная точка web-api (контроллер) - это единственный ресурс, который принимает команды get / post / put / delete. Это не обычный контроллер MVC.
Обязательно в /api/VTRouting
может быть только один метод HttpPost, который принимает параметры, которые вы отправляете. Имя функции не имеет значения , если вы украшаете материал [http]. Я никогда не пробовал.
Изменить: это не работает. При разрешении он, кажется, зависит от количества параметров, а не от попыток привязки модели к типу.
Вы можете перегружать функции для приема разных параметров. Я уверен, что вы были бы в порядке, если бы объявили это так, как вы, но использовали разные (несовместимые) параметры для методов. Если параметры совпадают, вам не повезло, поскольку привязка к модели не будет знать, какой из них вы имели в виду.
[HttpPost]
public MyResult Route(MyRequestTemplate routingRequestTemplate) {...}
[HttpPost]
public MyResult TSPRoute(MyOtherTemplate routingRequestTemplate) {...}
Эта часть работает
Значение по умолчанию шаблон, который они дают при создании нового, делает это довольно явным, и я бы сказал, что вы должны придерживаться этого соглашения:
public class ValuesController : ApiController
{
// GET is overloaded here. one method takes a param, the other not.
// GET api/values
public IEnumerable Get() { .. return new string[] ... }
// GET api/values/5
public string Get(int id) { return "hi there"; }
// POST api/values (OVERLOADED)
public void Post(string value) { ... }
public void Post(string value, string anotherValue) { ... }
// PUT api/values/5
public void Put(int id, string value) {}
// DELETE api/values/5
public void Delete(int id) {}
}
Если вы хотите сделать один класс, который делает много вещей, для использования ajax , нет большой причины не использовать стандартный контроллер / шаблон действия. Единственное реальное отличие заключается в том, что ваши сигнатуры методов не такие красивые, и вы должны обернуть вещи в Json( returnValue)
, прежде чем вы их вернете.
Редактировать:
Перегрузка работает отлично, когда используя стандартный шаблон (отредактированный для включения) при использовании простых типов. Я пошел и протестировал другой путь, с двумя пользовательскими объектами с разными сигнатурами. Никогда не мог заставить его работать.
Это сработало для меня в этом случае, см., где он вас доставит. Исключение только для тестирования.
public class NerdyController : ApiController
{
public void Post(string type, Obj o) {
throw new Exception("Type=" + type + ", o.Name=" + o.Name );
}
}
public class Obj {
public string Name { get; set; }
public string Age { get; set; }
}
И вызывается как эта форма консоли:
$.post("/api/Nerdy?type=white", { 'Name':'Slim', 'Age':'21' } )
На все, что вы спросили (и почему первый комментарий в ответ на ваш вопрос не актуален), вы получите ответ либо в блоге, на который вы ссылаетесь, либо в последующем обсуждении в комментариях. Вкратце:
Первые 5 символов означают, что существует 16 ^ 35 различных возможных суффиксов. Общее количество возможных значений исходного пароля может быть бесконечно.
Вы можете привести аргумент, что закон вероятности определяет, что основной пароль, скорее всего, будет уже в HIBP и там с более высоким счетом распространенности, но только из одного хеш-префикса у вас нет абсолютно ничего, чтобы проверить это предположение.
И даже если вы могли бы надежно угадать действительный пароль, нет контекста имени пользователя, с которым он связан. В зависимости от того, как он запрашивается, может также не быть контекста в отношении того, какая служба проверяет API, и, следовательно, нет информации о том, где фактически используется пароль.
И если после этого ты все еще параноик, просто скачай хеши и используй их локально