0

私は ajax で API 呼び出しを行おうとしています:

svc.authenticateAdmin = function (id, code) {
    $.ajax({
        url: 'api/event/authenticate',
        data: { 'id': id, 'code': code },
        datatype: 'json',
        contentType: 'application/json',
        type: 'GET',
        success: function (data) {
            App.eventBus.publish('authenticationComplete', data);
        }
    });
};

API コントローラのメソッド:

[ActionName("All")]
public bool Authenticate(int id, string code)
{
    var repo = new MongoRepository<Event>(_connectionString);
    var entry = repo.FirstOrDefault(e => e.Id == id);
    return entry.AdminPassword == code;
}

しかし、404 エラーが発生します: urlstuff/api/event/authenticate?id=123&code=abc 404 (Not Found)

私は多くの既知の動作中の呼び出し (私が書いたものではありません) から実装をコピーしました。次のようになります。

svc.getEventFromCode = function (code) {
    $.ajax({
        url: '/api/event/',
        data: { 'code': code },
        dataType: 'json',
        type: 'GET',
        success: function (data) {
            App.eventBus.publish('loadedEvent', data);
            App.eventBus.publish('errorEventCodeExists');
        },
        error: function () {
            App.eventBus.publish('eventNotFound', code);
        }
    });
};

svc.getEventPage = function (pageNumber) {
    $.ajax({
        url: '/api/event/page/',
        data: { 'pageNumber': pageNumber },
        dataType: "json",
        contentType: "application/json",
        type: 'GET',
        success: function (data) {
            App.eventBus.publish('loadedNextEventsPage', data);
        }
    });
};

ただし、どちらも API に 2 つのパラメーターを渡す必要はありません。私はそれが本当にマイナーなものだと推測しています:/

4

2 に答える 2

1

アクション名は「Authenticate」と呼ばれますが、アクションの名前を変更する次のものが含まれています。

[ActionName("All")]

これにより、URLが作成されます

/api/event/all
于 2013-07-19T18:37:18.993 に答える