Попытка позвонить из Почтальона не удается, но работает из приложения - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь вызвать конечную точку API C # от Почтальона.Я упрощаю код от рабочего:

url: https://localhost:44302/api/MyControllerName/MyMethodName
Method: Post
Headers: 
    Content-Type: application/json
    Accept: application/json
    Body: {"ids": "1234asdfasdfasdf3e"}

и код моего контроллера:

    [HttpPost]
    [Route("api/MyControllerName/MyMethodName")]
    public async Task PostNewIds([FromBody] string ids)
    { // <-- breakpoint here is never hit
        var json = JsonConvert.SerializeObject(ids);
        Debug.WriteLine(json);
    }

, но я получаю эту ошибку в VS и не могу достичь установленной точки остановапри открытой фигурной скобке

{"Unexpected character encountered while parsing value: {. Path '', line 1, position 1."}

enter image description here

1 Ответ

0 голосов
/ 25 декабря 2018

В вашем действии PostNewIds вы десериализуете тело запроса как параметр string, то есть ваш ids == @"{""ids"":""1234asdfasdfasdf3e""}".Если вам нужно получить ids значение из запроса, вы можете добавить модель:

public class MyMethodNameModel
{
    public string Ids { get; set; }
}

Теперь вы можете использовать эту модель в своем действии:

[HttpPost, Route("api/MyControllerName/MyMethodName")]
public async Task PostNewIds([FromBody] MyMethodNameModel model)
{
    Debug.WriteLine(model.Ids);
}

ИЛИ при желании вы можете воспользоваться предложением @Hasan и десериализовать «руками»:

[HttpPost, Route("api/MyControllerName/MyMethodName")]
public async Task PostNewIds([FromBody] string body)
{
    var obj = JsonConvert.DeserializeObject(ids) as JObject;
    var val = obj["ids"] as JValue;
    Debug.WriteLine(val.Value);
}
...