Атрибут HttpPut не будет привязывать модель - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над проектом API в ядре .net и столкнулся с проблемой. Я не могу связать клиентскую модель с переменной client в приведенном ниже методе, обратите внимание, что она работала с атрибутивным методом [HttpPost].

КОД

[Route("client/{id}")]
[HttpPut]
public IActionResult UpdateClient(string id, [FromBody] Client client)
{ 
    try
    {
        ObjectId objectid = new ObjectId(id);

        Client update = _oauthRepository.GetClient(objectid);

        if(update != null)
        {
            _oauthRepository.UpdateClient(objectid, client);

            return Json(objectid);
        }

        return Json(false);
    }
    catch(Exception e)
    {
        throw e;
    }
}

POSTMAN

[Method: PUT] url: http://localhost:50122/client/5aeb1a29405f2558bc6eac84
Body (JSON(application/json)):

{
    "BsonID": "5aeb1a29405f2558bc6eac84",
    "clientID": "blaatje",
    "clientSecrets": [
        "secret"
    ],
    "allowedScopes": "api"
}

МОДЕЛЬ КЛИЕНТА

namespace AuthServer.Models
{
    public class Client
    {
        [BsonId]
        public ObjectId BsonID { get; set; }
        public string ClientID { get; set; }
        public IEnumerable<string> ClientSecrets { get; set; }
        public string AllowedScopes { get; set; }
    }
}

1 Ответ

0 голосов
/ 04 мая 2018

Хорошо, ребята, я понял это. Ему не понравился параметр BsonID, возможно, потому что это было атрибутом MongoDB [BsonId], он конвертируется в _id драйвером MongoDB. См. Запрос ниже.

POSTMAN

[Method: PUT] url: http://localhost:50122/client/5aeb1a29405f2558bc6eac84
Body (JSON(application/json)):

{
    //"BsonID": "5aeb1a29405f2558bc6eac84", // <-- Leave this line out and it works, probably because this is a MongoDB attributed property
    "clientID": "blaatje",
    "clientSecrets": [
        "secret"
    ],
    "allowedScopes": "api"
}

Теперь перейдем к следующей ошибке, но эта проблема выходит за рамки этого вопроса:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...