Примеры использования JSON API .Net Core Put и Patch - PullRequest
0 голосов
/ 15 ноября 2018

Я тестирую стандартную библиотеку для ядра dotnet с json: api спецификацией из github repo {json: api} . Конечные точки для GET (с запросом или без него), POST и DELETE работают, как и ожидалось, когда я отправляю сообщение от почтальона. Но я не смог найти рабочие примеры, чтобы изменить существующий ресурс с помощью PUT или PATCH. Когда я отправляю запрос патча с данными, он возвращает мне ответ «200 OK», но он не изменился в базе данных. Ниже мой запрос и ответ.

  Request GET : http://localhost:5000/api/people -> 200 OK
  Response : [
  {
    "name": "Samuel",
    "articles": null,
    "id": 2,
    "stringId": "2"
  },
  {
    "name": "John",
    "articles": null,
    "id": 3,
    "stringId": "3"
  },
  {
    "name": "Robbin",
    "articles": null,
    "id": 4,
    "stringId": "4"
   } ]

  Request GET: http://localhost:5000/api/people/2 -> 200 OK
  Response : {
   "name": "Samuel",
   "articles": null,
   "id": 2,
   "stringId": "2" 
  }

  Request GET: http://localhost:5000/api/people/2?include=articles -> 200 OK
  Response : {
   "name": "Samuel",
   "articles": [],
   "id": 2,
   "stringId": "2" 
  }

  Request POST: http://localhost:5000/api/people -> 201 Created
  Request Body: {"name":"Samuel"}
  Response : {
   "name": "Samuel",
   "articles": null,
   "id": 2,
   "stringId": "2" 
  }

  Request DELETE: http://localhost:5000/api/people/2 -> 204 No Content

Как я могу обновить данные?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я принял окончательное решение после прочтения спецификаций JSONAPI и OData. Я просто придерживаюсь своего собственного формата для лучшего понимания своего собственного кода, и я рекомендую Swagger для Api Documentation. Не имеет смысла, если спецификация не соответствует моему требованию, даже когда люди говорят, что это стандарт.

0 голосов
/ 15 ноября 2018

Я нашел в документах, которые требуют включения следующих двух заголовков для разных вызовов API, и запрос тела также различен для PATCH.

"Accept: application/vnd.api+json"       <--- This needs to put in header
"Content-Type: application/vnd.api+json" <--- This also needed.

Request PATCH: http://localhost:5000/api/people/3 -> 200 OK
// Request body becomes text, anybody knows how to format to JSON?
Request Body(Text): {
 "data": {
  "type": "people",
  "attributes": {
       "name": "John"
     }
   }
}

Response : {
      "data": {
         "attributes": {
        "name": "John"
    },
      "relationships": {
        "articles": {
            "links": {
                "self": 
            "http://localhost:5000/api/people/3/relationships/articles",
                "related": "http://localhost:5000/api/people/3/articles"
            }
        }
       },
          "type": "people",
          "id": "3"
       } }
...