Запись API не найдена - PullRequest
       11

Запись API не найдена

0 голосов
/ 12 марта 2020

Я создаю этот API, который принимает Id, если этот Id найден. Он вернет данные. Но если этот Id не найден, я возвращаю 409. Когда я проверяю его в почтальоне, я вижу статус 409, это правильно? это все, что мне нужно, или он также должен вернуть текст в теле?

enter image description here

    [HttpGet]
    public IHttpActionResult Read(string type, string id)
     {
        if (id== null)
        {
           var msg = new HttpResponseMessage(HttpStatusCode.NotFound) { ReasonPhrase = "Unable to Find Id" };
msg.Content= new StringContent($"No entity with {id} was found");
           return ResponseMessage(msg);
        }
     }

1 Ответ

2 голосов
/ 12 марта 2020

Вы видите "не найденный" текст:

enter image description here

Вы не видите ничего в теле, потому что ваш API не отправьте тело, просто заголовок HTTP

Ваш комментарий и ссылку в совете GPW, верните что-нибудь нестандартное - пусть ошибки будут ошибками, и это предсказуемое условие будет отображаться как ответ "ОК, но нет", возможно:

[HttpGet]
public ActionResult Read(string type, string id)
 {
    if (id == null)
       return Json(new { status= "fail", message= "id parameter is required" });
    else if (type == null)
       return Json(new { status= "fail", message= "type parameter is required" });


    var ent = dbcontext.Entity.FirstOrDefault(e => e.Type == type && e.Id == id);

    if(ent == null)
      return Json(new { status="fail", message= "No entity with that type/id was found" });
    else
      return Json(new { status="ok", entityName= ent.Name });

 }

В одном из наших приложений мы используем ошибки HTTP, чтобы изменить поведение клиента - в приложении клиентской реакции есть цепочка обещаний, и мы используем возврат ошибки, чтобы остановить обработку цепочки, проанализировать ошибка, затем go возвращается к синтаксическому анализу, зная, что JSON - это немного другая форма. Я не уверен, что это отличный способ сделать это, поскольку он сделал клиента более сложным, чем он мог бы быть, но если вы хотите сделать это, то обязательно посмотрите способы возврата значимых ошибок http. Лично (и на это ссылается GPW) даже отладка, много раз я пропускал код возврата в почтальоне, получал пустой ответ, вводил в заблуждение, что что-то не так, чем то, что на самом деле происходит / получил 404 и думал, что задняя часть не может не могу найти сущность, когда на самом деле я ошибся в URL и получил 404 по другой причине et c

...